[英]What is difference between a service Layer and Business Layer in N layered architecture
[英]Layered Architecture: Application and Infra Layer
我开始学习软件体系结构,并且看到了一些使我感到困惑的分层体系结构实现。
一般而言,这些解决方案具有以下几层:
我不确定:
如果有人可以回答我这些问题或向我推荐一些资源以了解更多信息,我将不胜感激。
感谢,并有一个愉快的一天! :)
表示层:顾名思义,该层的关注点就是用户看到或与其交互的内容。 它包含UI逻辑,图形,表单,图像等。
域层:这是处理您的业务逻辑的地方。 如果您正在编写Weblog,则此层包含对象和实体,如“帖子”,“用户”,“评论”等。如果您正在编写财务系统,则它们将是“帐本”,“帐户”,“资金”等。系统中最有价值的代码依赖于此,因为他们满足了用户的关注。
基础结构层:从传统意义上讲,每个层都仅访问基础层,但是有时该层涵盖了多层的问题。 因此,我怀疑您是否可以将其称为经典意义上的一层 。 它包含应用程序范围的抽象和基类,有时还涉及交叉问题等。
服务层: “ 处理域逻辑的一种常用方法是将域层分成两部分。将服务层置于基础域模型之上 ”,PoEAA,Martin Fowler。 就像马丁·福勒(Martin Fowler)在他的书中说的那样(我建议您阅读本书),这是您网域之上的一层,可以使您对网域的使用更加容易。 这样一来,客户就不必了解域复杂性。 它包含外立面。 也是处理某些问题(例如安全性,事务管理等)的好地方。
数据层:该层管理存储逻辑。 它可以是一个简单的文件或一些较大的关系数据库。 在没有业务逻辑或业务逻辑很少的简单项目中,数据层扮演“域层”角色,反之亦然。 其实这并不重要。 重要的是,域模型与数据结构之间可能存在一些阻抗失配。 数据层的主要关注点是为应用程序的其他部分(特别是域层)解决此难题。
哪一层与数据通信? 最重要的是域层。 但这并不总是正确的。 假设您要在数据库中保存UI的一些用户首选项。 因此,表示层也可以与数据层通信。 实际上,任何层都可以与数据进行通信。 重要的是,您应该使用模式和最佳实践(例如IOC)来充分利用项目需求。
祝好运!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.