问题背景:在这个快速应对需求变化的时代,代码容易被实现成意大利面条式,同时重复代码多,又好像有一些不同,很多程序员都掉进了这个让人痛苦不堪的焦油坑,无法自拔。软件设计就是在长期以来让软件容易应对变化,提高可修改性和可维护性,从而降低软件开发成本。方案介绍:通过分层设计,分离关注点,凸显领域模型,降低层与层之间的依赖,同时有利于各层逻辑的复用或替换。《领域驱动设计-软件核心复杂性应对之道》这本书中,提出了传统的四层架构,层与层之间遵循松散分层架构,即上层可以调用任意下层。我们在实践中,将基础设施层分为横向的和纵向的,横向的API提供给领域层调用,纵向的API提供给应用层和用户界面层调用,其中领域层、应用层和用户界面层遵循严格分层架构,即上层仅能调用相邻的下层,这就是“L”型分层架构。将DCI应用在分层架构中,将出现五层架构模式,相对于传统的四层架构模式,基础设施层、应用层和用户界面层保持不变,将领域层分离成新领域层(Object/Role)和环境层(Context)。在一些复杂的领域,一次事务涉及很多次消息的交互,这时Context层就非常复杂,很有必要把Context层分离成新Context层(Action和Specification)和事务层(Transaction DSL)。新Context层基本单位是一次同步消息或异步消息的交互(记作Action),新Context层的Specification是Action或一组紧密相关的Action(记作Procedure)是否执行的开关,而事务层可以看做是大Context层。在实践中,我们抽取出Golang事务模型,基本版参见简书的文章《Golang事务模型》,地址https://www.jianshu.com/p/b7e874f6d3e8,一直在演进,目前已被多个团队使用。DDD六层架构模式可以看做是DDD五层架构模式在特定领域的一种变体。通过依赖导致原则,改善分层架构,即六边形架构。六边形架构在产品级有一些应用,比如平台聚合内部的各种能力,对外统一提供为Restful接口。六边形架构也可以用于不同层组件的协作开发,即在明确组件功能后就可以专注开发,待到联调阶段,该组件的多个用户分别通过端口适配器方式再与该组件进行集成。实施后效果说明:事务层代码和流程图一一对应,领域层代码通过小类大对象设计,代码层次清晰,有效的控制了软件的实现复杂度,并且得到了团队所有成员的普遍认可。
浏览6452次
浏览6569次
浏览7821次
浏览5238次
浏览10224次
浏览5707次
2025-06-20 深圳
2025-04-19 南京
2025-08-15 上海
2025-10-23 上海
打开微信扫一扫,分享到朋友圈