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

mic*_*euz 57 language-agnostic architecture

应用层和业务逻辑层之间有什么区别?我有点明白,业务层提供业务特定服务,应用层耦合业务服务,并为最终用户(Web服务,UI等)提供服务.我对吗?

Mar*_*ann 64

这听起来是正确的.

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

应用层桥接业务层和边界技术之间的差距.

  • 在这种背景下,"边界技术"意味着什么? (8认同)
  • 位于应用程序边界的任何技术.UI框架,数据库访问库,服务网关,HTTP或SOAP框架,文件系统库,特定的消息队列库等. (6认同)
  • 如果你遵循 DDD,那么还有表示层,可以是 html、wpf、rest api 等。应用程序层由不同的表示层重用。总线/域和应用程序之间的区别在于,域仅包含业务已知的对象(或为开发人员工作的抽象),并由总线人员和开发人员共享的 coomon 语言(通用语言)命名。应用程序层使其成为“程序” (2认同)

Jus*_*ier 21

总结一下:

  • 应用程序层由特定于此应用程序的那些元素组成.因此,它将包含UI,UI的后端处理以及应用程序和业务逻辑层之间的任何绑定.在完美的世界中,该层不包含业务域的任何逻辑.

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

  • 我完全同意贾斯汀的观点。应用程序层应该只包含最少的逻辑(即:该字段是否有空格或有多少个字符)。业务逻辑应该只对数据本身起作用和验证。这就是为什么我在应用程序层看到嵌入式 SQL 感到沮丧,而业务逻辑中没有人可以重用它! (2认同)