我听说人们经常在工作中和在线上谈论业务逻辑,并且我已经在此站点上阅读了一些有关它的问题,但是这个词对我来说仍然没有多大意义。例如,以下是我经常看到的一些(释义)语句:
“业务逻辑是程序中编码实际业务规则的部分。” 我读过的大多数定义都是这样的循环定义。
“业务逻辑是您的特定应用程序所独有的一切。” 我不认为这与“您的特定应用程序不过是业务逻辑”有什么不同,除非我们不小心重新发明了一些轮子,可以使用现有的第三方软件。因此,问题标题。
“在数据访问层上方和GUI层下方应该有一个业务逻辑层。” 在我编写的代码中,数据库访问者必须知道他们应该访问什么数据,UI代码必须知道很多关于其显示内容的信息才能正确显示,这之间没有任何实际要做的事情。除了在客户端和服务器之间传递数据Blob之外,还有这两个地方。那么,实际上应该放入业务逻辑层的内容是什么?
“业务逻辑应与表示逻辑分开。” 我们收到的大多数功能请求都是出于业务原因更改展示逻辑。如果业务规则之一是默认情况下以32位符号显示美国政府债券价格(同时还为用户提供配置UI的功能),则表示逻辑至少需要知道该规则存在(如果未完全实现)。而且,UX设计的主要部分似乎是帮助用户了解我们的软件试图实现的业务规则。
我是否有可能实际上只在一个只包含业务逻辑的团队中工作,而所有非业务逻辑都由其他团队来完成?还是“业务逻辑”作为一个单独实体的整个概念仅适用于某些应用程序或体系结构?
为了使答案更具体:假设您必须重新实现Domino的Pizza应用程序。什么是业务逻辑,该应用程序的非业务逻辑是什么?以及如何在不将大多数披萨信息渗入数据访问和表示层的情况下,将披萨订购业务逻辑放入其自己的代码“层”中?
更新:我得出的结论是,我的团队可能正在执行90%的UI代码,并且您所称的大多数(但不是全部)业务逻辑都来自其他团队或公司。基本上,我们的应用程序是用于监视财务数据以及几乎所有功能都是用户自定义其所见以及所见方式的方式。没有进行买卖(尽管我们与公司的其他应用程序进行了一些集成),并且实际数据由大量外部资源提供。但是我们确实允许用户执行诸如将其“监视器”的副本发送给其他用户之类的事情,因此我们处理方式的详细信息可能符合业务逻辑。实际上,目前有一个移动应用程序正在与我们的一些后端代码进行对话,并且我确切地知道我希望在理想的世界中与我们的UI共享前端代码的哪一部分(基本上是准MVC中的M),因此我猜这就是我们的BLL。
我接受user61852的回答,因为它使我对“业务逻辑”指的是和不指的有更具体的了解。