关于c#:基于DDD微服务的开发实战1

58次阅读

共计 1355 个字符,预计需要花费 4 分钟才能阅读完成。

1 DDD 是什么?

DDD 是畛域驱动设计,是 Eric Evans 于 2003 年提出的,离当初有 17 年。

2 为什么须要 DDD

当软件越来越简单,理论开发中,大量的业务逻辑沉积在一个巨型类中的例子不足为奇,代码的复用性和扩展性无奈失去保障。为了解决这样的问题,DDD 提出了清晰的分层架构和畛域对象的概念,让面向对象的剖析和设计进入了一个新的阶段,对企业级软件开发起到了微小的推动作用。

2.1 POP,OOP,DDD 是如何解决问题

面向过程编程(POP),接触到需要第一步思考把需要自顶向下分解成一个一个函数。并且在这个过程中思考分层,模块化等具体的组织形式,从而合成软件的复杂度。当软件的复杂度不是很大,POP 也能失去很好的成果。

面向对象编程(OOP),接触到需要第一步思考把需要分解成一个一个对象,而后每个对象增加一个一个办法和属性,程序通过各种对象之间的调用以及合作,从而实现计算机软件的性能。跟很多工程办法一样,OOP 的初衷就是一种处理软件复杂度的设计办法。

畛域驱动设计(DDD),接触到需要第一步思考把需要分解成一个一个问题域,而后再把每个问题域分解成一个一个对象,程序通过各种问题域之间的调用以及合作,从而实现计算机软件的性能。DDD 是解决简单中大型软件的一套卓有成效形式,现已成为支流。

2.2 POP,OOP,DDD 的特点

POP,无边界,软件复杂度小实用,例如“盖房子”。

OOP,以“对象”为边界,软件复杂度中实用,例如“盖小区”。

DDD,以“问题域”为边界,软件复杂度大实用,例如“盖城市”。

3 DDD 的分层架构和形成因素

3.1 分层架构

整个架构分为四层,其外围就是畛域层(Domain),所有的业务逻辑应该在畛域层实现,具体形容如下:

用户界面 / 展示层 ,负责向用户展示信息以及解释用户命令。

应用层 ,很薄的一层, 用来协调利用的流动。它不蕴含业务逻辑。它不保留业务对象的状态, 但它保有利用工作的进度状态。

畛域层 ,本层蕴含对于畛域的信息。这是业务软件的外围所在。在这里保留业务对象的状态, 对业务对象和它们状态的长久化被委托给了基础设施层。

基础设施层 ,本层作为其余层的撑持库存在。它提供了层间的通信, 实现对业务对象的长久化, 蕴含对用户界面层的撑持库等作用。

3.2 形成因素

实体(Entity),具备惟一 ID,可能被长久化,具备业务逻辑,对应事实世界业务对象。

值对象(Value Object),不具备惟一 ID,由对象的属性形容,个别为内存中的长期对象,能够用来传递参数或对实体进行补充形容。

畛域服务(Domain Service),为上层建筑提供可操作的接口,负责对畛域对象进行调度和封装,同时能够对外提供各种模式的服务。

聚合根(Aggregate Root),聚合根属于实体对象,聚合根具备全局惟一 ID,而实体只有在聚合外部有惟一的本地 ID,值对象没有惟一 ID

工厂(Factories),次要用来创立聚合根,目前架构实际中个别采纳 IOC 容器来实现工厂的性能。

仓储(Repository),封装了基础设施来提供查问和长久化聚合操作。

4 小结

通过本文介绍,咱们理解 DDD 是为解决软件复杂性而诞生,与 OOP 最大的区别就是划分边界的形式不一样,所以 DDD 自身把握起来并不会感觉简单,DDD 其实是钻研将蕴含业务逻辑的 ifelse 语句放在哪里的学识。

正文完
 0