美文网首页
分离领域

分离领域

作者: 向前走向后看 | 来源:发表于2018-12-28 23:02 被阅读0次

1. 用户界面层(或表示层)

负责向用户显示信息和解释用户指令。这里的用户可以是另一个计算机系统,不一定是使用用户界面的人

2. 应用层

定义软件要完成的任务,并且指挥表达领域概念的对象来解决问题。这一层所负责的工作对业务来说意义重大,也是与其他系统的应用层进行交互的必要渠道


应用层要尽量简单,不包含业务规则或者知识,而只是为下一层种的领域对象协调任务,分配工作,使它们互相协作。它没有反映业务情况的状态,但是却可以具有另外一种状态,为用户或程序显示某个任务的进度。

3. 领域层

负责表达业务概念,业务状态信息以及业务规则。尽管保存业务状态的技术细节是由基础设施层实现的,但是反映业务情况的状态是由本层控制并且使用的。领域层是业务软件的核心。

4. 基础设施层

为上面各层提供通用的技术能力,为应用层传递消息,为领域层提供持久化机制,为用户界面层绘制屏幕组建等等。基础设施层还能够通过架构框架来支持4个层次间的交互。

由于应用层负责对领域对象的行为进行协调,因此细粒度的领域对象可能会把领域层的知识泄漏到应用层种。这产生的结果是应用层不得不处理复杂的、细致的交互,从而使得领域层知识蔓延到应用层或用户界面代码当中,而领域层会丢失这些知识。明知的引入领域层服务有助于在应用层和领域层中间保持一条明确的界限。

e.g. 资金转账

应用层 资金转账应用服务
a. 获取输入
b. 发送消息给领域层服务,要求其执行
c. 监听确认消息
d. 决定使用基础设施service来发送通知


领域层 资金转账领域服务
a. 与必要的Account和Ledger(总账)对象进行交互,执行相应的借入和贷出操作
b. 提供结果等到确认


基础设施层 发送通知服务
a. 按照应用程序的指示发送电子邮件、信件和其他信息

领域层的混乱原因

客户需要一种有效的方式来获取对已存在的领域对象的引用,如果基础设施提供了这方面的便利,那么开发人员可能会增加很多可遍历的关联,这会使模型变得非常混乱。另一方面,开发人员可能使用查询从数据库中提取他们所需的数据,或是直接提取具体的对象,而不是通过aggregate的根来得到这些对象,这样就导致领域逻辑进入查询和客户代码中,而entity和value object则变成单纯的数据容器。采用大多数处理数据库访问的技术复杂性很快就会使客户代码变得混乱,这将导致开发人员简化领域层,最终使模型变得无关紧要。

相关文章

  • 分离领域

    1. 用户界面层(或表示层) 负责向用户显示信息和解释用户指令。这里的用户可以是另一个计算机系统,不一定是使用用户...

  • 架构设计原则

    业务与技术分离 技术组件/库 技术服务 应用与服务分离 领域内应用(主要功能为领域的,可以调用其他领域服务) 跨领...

  • DDD构造块

    分离领域 分离领域的基本概念是分层的思想。原则是层中的任何元素都仅依赖本层的其他元素或其下层元素。 处理业务规则是...

  • 领域驱动设计-模型驱动设计的构造块

    1,Layered Architecture (分离领域) 1,将领域模型相关的代码集中到一个层中,把它从用户界...

  • Odd-e blogs archives

    https://yihuode.io/articles/124 分离需求领域和直线组织https://yihuod...

  • 软件质量思考(二)分离领域逻辑

    单元测试是软件质量的基本保证。但是,单元测试的概念至今应该有二十年之久,现实中在国内仍少有实践,听说即便是一线互联...

  • 重构读书笔记-12_3-Separate_Domain_From

    重构第十二章 3.Spearate Domain from Presentation(将领域和表述/显示分离) 某...

  • 火起来的“相分离”是什么吗?

    相分离或者说相变(Phase separation,Phase Transition)是目前比较火的一个研究领域,...

  • 《底层逻辑》是非对错的底层逻辑

    R:在心理学领域,可由一个重要概念来解释,叫课题分离。“课题分离”理论由奥地利心理学家阿尔弗雷德·阿德勒提出,原意...

  • 领域驱动设计: 服务边界划分

    DDD是什么? 领域驱动设计是一种处理高度复杂域的设计方法,试图分离技术实现的复杂性,围绕业务概念构建领域模型来控...

网友评论

      本文标题:分离领域

      本文链接:https://www.haomeiwen.com/subject/fjcylqtx.html