bingoohuang/blog

架构的形状

Opened this issue · 0 comments

架构的形状

三明治🥪型

All problems in computer science can be solved by another level of indirection, except of course for the problem of too many indirections. — David Wheeler

image

比如在实践中 ,展现部分的代码只负责将数据渲染出来,应用部分的代码只负责序列化/反序列化、组织并协调对业务服务的调用,数据访问层则负责屏蔽底层关系型数据库的差异,为上层提供数据。这就是层级架构的由来:上层的代码直接依赖于临近的下层,一般不对间接的下层产生依赖,层次之间通过精心设计的API来通信(依赖通常也是单向的)。

六边形蜂巢型

image

六边形架构最早由Alistair Cockburn提出。在DDD社区得到了发展和推广,然后IDDD(《实现领域驱动设计》)一书中,作者进行了比较深入的讨论。

通过将传统内置在层次架构中的数据库访问层、通信机制等部分的剥离,应用程序可以简单的分为内部和外部两大部分。内部是业务的核心,也就是DDD(Domain Driven Design)中强调的领域模型(其中包含领域服务,对业务概念的建立的模型等);外部则是类似RESTful API,SOAP,AMQP,或者数据库,内存,文件系统,以及自动化测试。

六边形架构的优点:

  1. 业务领域的边界更加清晰
  2. 更好的可扩展性
  3. 对测试的友好支持
  4. 更容易实施DDD

参考

  1. 从三明治到六边形