美文网首页
《实现领域驱动设计》拆书稿 第7章 领域服务

《实现领域驱动设计》拆书稿 第7章 领域服务

作者: wiwisir | 来源:发表于2020-06-17 10:07 被阅读0次
    image.png

    拆书稿

    一、什么是领域服务(首先,什么不是领域服务)

    领域服务和应用服务的区别

    应用服务:

    不会处理业务逻辑,它负责编排和转发,它将要实现的功能委托给一个或多个领域对象来实现,它本身只负责处理业务用例的执行顺序以及结果的拼装。

    领域服务:

    是用来协调领域对象完成某个操作,用来处理业务逻辑的,它本身是一个行为,所以是无状态的。状态由领域对象(具有状态和行为)保存。

    应用服务是领域服务的客户方;

    什么操作不属于实体或者值对象,什么情况下我们可以使用领域服务:

    • 执行一个显著的业务操作过程
    • 对领域对象进行转换
    • 以多个领域对象作为输入进行计算,结果产生一个值对象

    读后思考

    1、什么是服务?

    服务是行为的抽象

    • 应用服务属于应用层,用来表述应用行为;
    • 领域服务属于领域层,用来表述领域行为;
    • 应用层(Application):负责展现层与领域层之间的协调,协调业务对象来执行特定的应用程序任务。它不包含业务逻辑。
    • 领域层(Domain):负责表达业务概念,业务状态信息以及业务规则,是业务软件的核心

    2、什么是应用服务?

    • 应用服务是用来表达用例和用户故事(User Story)的主要手段。
    • 应用层通过应用服务接口来暴露系统的全部功能。在应用服务的实现中,它负责编排和转发,它将要实现的功能委托给一个或多个领域对象来实现,它本身只负责处理业务用例的执行顺序以及结果的拼装。通过这样一种方式,它隐藏了领域层的复杂性及其内部实现机制。
    • 应用层相对来说是较“薄”的一层,除了定义应用服务之外,在该层我们可以进行安全认证,权限校验,持久化事务控制,或者向其他系统发生基于事件的消息通知,另外还可以用于创建邮件以发送给客户等。
    • 应用层作为展现层与领域层的桥梁。展现层使用VO(视图模型)进行界面展示,与应用层通过DTO(数据传输对象)进行数据交互,从而达到展现层与DO(领域对象)解耦的目的。

    3、什么是领域服务?

    领域层就是较“胖”的一层,因为它实现了全部业务逻辑并且通过各种校验手段保证业务正确性。而什么是业务逻辑呢?业务流程、业务策略、业务规则、完整性约束等。

    推荐阅读

    https://www.cnblogs.com/sheng-jie/p/7097129.html

    相关文章

      网友评论

          本文标题:《实现领域驱动设计》拆书稿 第7章 领域服务

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