应用层和业务逻辑层有啥区别?

Posted

技术标签:

【中文标题】应用层和业务逻辑层有啥区别?【英文标题】:What's the difference between application layer and business logic layer?应用层和业务逻辑层有什么区别? 【发布时间】:2011-02-07 12:21:14 【问题描述】:

应用层和业务逻辑层有什么区别?我有点理解业务层提供业务特定服务,而应用程序层结合业务服务并向最终用户提供服务(Web 服务、UI 等)。我说的对吗?

【问题讨论】:

Business and application logic? 的可能重复项 【参考方案1】:

这听起来很正确。

业务层边界技术中立的方式实现领域模型。换句话说,它不依赖于任何特定的 UI 或服务接口相关技术,例如 Web 库或窗口 API。您应该能够从任何类型的应用程序(Web、富客户端、Web 服务等)使用业务层。

应用层在业务层和边界技术之间架起了一座桥梁。

【讨论】:

在这种情况下“边界技术”是什么意思? 位于应用程序边界的任何技术。 UI 框架、数据库访问库、服务网关、HTTP 或 SOAP 框架、文件系统库、特定消息队列库等 如果你遵循DDD,还有表现层,可以是html、wpf、rest api等。应用层被不同的表现层重用。总线/域和应用程序之间的区别在于,域仅由业务已知的对象(或为开发人员工作的抽象)组成,并且由总线人员和开发人员共享的 coomon 语言(无处不在的语言)命名。应用层是使它成为“程序”的原因 @SnehalMasne 这可能是一个起点:blog.ploeh.dk/2013/12/03/… @eldar “应用层在业务层和边界技术之间架起了一座桥梁,”所以如果边界技术不同,应用层将不得不这样做好吧。【参考方案2】:

总结一下:

应用层由特定于该应用的元素组成。这将包含 UI、UI 的后端处理以及应用程序和业务逻辑层之间的任何绑定。理想情况下,这一层不会包含任何业务领域的逻辑。

业务逻辑层 (BLL) 包含特定于业务领域的逻辑。此外,如果您要创建一个单独的 BLL,该层应包含其他应用程序以及该应用程序可以使用的逻辑。例如,一组 Web 服务公开定义良好的 API。这将 BLL 与您的应用程序分离,并允许您将来灵活地在它之上构建其他应用程序。

【讨论】:

你能提供这个来源吗?您的第一个项目符号听起来像我通常听到的表示层。 不幸的是,没有。我认为他的评论是指特定于应用程序的代码层,而不是特定于业务的 BLL 层。但你是对的,通常Application Layer 用于 OSI 模型的上下文中。 我完全同意贾斯汀的观点。应用层应该只包含最少的逻辑(IE:字段是否有空格或多少个字符)。业务逻辑应该只对数据本身起作用和验证。这就是为什么在应用层看到嵌入式 SQL 让我很沮丧,因为业务逻辑中没有人可以重用它!【参考方案3】:

据我了解,业务层负责业务决策,也就是涉及客户端协议的逻辑。

应用层是与业务决策无关的原始流程。

【讨论】:

【参考方案4】:

在业务层的经典分层中,我们有:

-业务规则 -安全 -用户活动记录 -事务管理...

功能需求 + 非功能需求 = 业务代码

在 DDD 功能需求中,如业务规则和业务逻辑都停留在领域层和 像安全和用户活动日志这样的非功能性需求留在应用层

【讨论】:

【参考方案5】:

我认为它是基础设施。根据应用程序,它可以包含用于配置、报告、UI shell 等的管道。

【讨论】:

【参考方案6】:

在我的脑海中,业务逻辑和应用逻辑之间的区别是:业务逻辑管理数据,应用逻辑管理用户

——来自这里的评论:https://www.bennadel.com/blog/2436-what-the-heck-is-business-logic-anyway.htm#comments_41200

【讨论】:

以上是关于应用层和业务逻辑层有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

N层架构中的服务层和业务层有啥区别

javaWeb中servlet层和service层有啥不同

struts中的action是控制层,为啥不是业务层呢?控制层和业务层有啥区别?怎么样分辨呢?

三层架构和mvc模式有啥关系

业务逻辑和 UI 逻辑有啥区别?

业务逻辑和数据访问层的循环依赖