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

68

应用层和业务逻辑层有什么区别?我有点理解业务层提供业务特定的服务,应用层则将业务服务捆绑在一起并向最终用户提供服务(Web服务、UI等)。我的理解正确吗?


6个回答

75

听起来差不多正确。

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

应用层填补了业务层和边界技术之间的差距。


10
在这个语境中,“boundary technology”是什么意思? - pseudocoder
9
任何处于应用程序边界的技术,比如UI框架、数据库访问库、服务网关、HTTP或SOAP框架、文件系统库、特定的消息队列库等。 - Mark Seemann
2
如果您遵循DDD,还有可能是HTML、WPF、REST API等演示层。应用程序层被不同的演示层重复使用。业务/领域和应用程序之间的区别在于,领域仅由业务人员(或为开发人员工作的抽象)所知道的对象组成,并且由业务人员和开发人员共享的通用语言命名(普遍语言)。应用程序层是使其成为“程序”的部分。 - buckley
1
@SnehalMasne 这可能是一个开始的地方:http://blog.ploeh.dk/2013/12/03/layers-onions-ports-adapters-its-all-the-same - Mark Seemann
1
“应用层桥接了业务层和边界技术之间的差距”,因此,如果边界技术不同,应用层也必须如此。 - Mark Seemann
显示剩余6条评论

24

总结:

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

  • 业务逻辑层(BLL)包含特定于业务领域的逻辑。此外,如果您要创建单独的BLL,则此层应包含可以由其他应用程序以及此应用程序使用的逻辑。例如,一组公开定义良好API的Web服务。这样可以将BLL与应用程序解耦,并允许您在未来构建其他应用程序。


你能提供这个的来源吗?你的第一条看起来像是我通常听到的被称为演示层的东西。 - Bill the Lizard
很遗憾,不是的。我理解他的评论是指特定于应用程序的代码层,而不是特定于业务的BLL层。但你是对的,通常“应用层”是在OSI模型的上下文中使用的。 - Justin Ethier
2
我完全同意Justin的观点。应用层应该只包含最少量的逻辑(例如:字段是否有空格或有多少个字符)。业务逻辑应该仅在数据本身上工作和验证。这就是为什么看到嵌入式SQL出现在应用层中,而业务逻辑无法重复使用它时,我感到沮丧的原因! - Vippy

3

据我理解,业务层负责处理与客户端协议相关的业务决策逻辑。

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


3

在经典的分层中,业务层包含以下内容:

-业务规则 -安全性 -用户活动日志 -事务管理...

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

在领域驱动设计中,功能需求(如业务规则和业务逻辑)留在领域层中,而非功能需求(如安全性和用户活动日志)留在应用层中。


0

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


-2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接