融合,就是战略和战术的融合,为了让软件运行起来,还需考虑领域逻辑与技术实现的融合,即领域层与网关层的融合。
在战略层次,需在领域驱动架构风格的约束和指导下考虑限界上下文之间的协作,思考并决策限界上下文的通信边界,思考从单体架构向微服务架构的演进,同时,因为进程间通信引起的诸多影响,需评估分布式通信、事务以及受技术因素驱动的命令查询职责分离模式是否对领域模型造成了影响。
事实证明,遵循领域驱动架构风格的系统完全满足架构演进的要求,只需付出少量修改成本,即可支持单体架构、SOA架构、微服务架构与事件驱动架构,同时还满足了领域模型的稳定性。
在战术层次,通过建立设计概念的统一语言,保证团队在领域建模时避免因概念理解的偏差出现设计的不一致,甚至做出有违领域驱动设计理念的错误决策。通过领域模型驱动设计获得的领域模型还需要考虑如何与持久化结合,解决对象关系映射的阻抗不匹配问题,以更加优雅的方式实现资源库,保证作为端口的资源库实现不会侵入领域模型,破坏领域的纯粹性。
领域驱动设计参考过程模型
无论战略还是战术,抑或二者的融合,都需要在领域驱动设计体系下进行。为了更好地理解领域驱动设计,我根据个人的设计经验提炼了领域驱动设计的精髓;面向期望引入和实践领域驱动设计的开发团队,我总结了领域驱动设计的能力评估模型,我还根据领域驱动设计统一过程给出了具有可操作性的领域驱动设计参考过程模型,将方法、过程、模式有机地融合起来,给出行之有效的指导意见。