1.领域驱动设计的咬文嚼字
对于领域驱动设计这四个字,我一般将其分为三段来思考,领域,驱动,设计这三个词语。
领域这一词往往会让人联想到地域这一词汇。在一次我坐车去西安的途中,打开了百度地图,我看见了地图上标注的中风险地区。这一下让我想到了,这个地区挂掉了不能去那。再细想一下,整个城市的运行像是一个微服务系统的运行,某个楼、某个店、某个街区就看成是一个单独的领域,它们为这个社会也就是这个系统提供着服务。但当一个地区出现病例,就相当于领域瘫痪,不能进行对系统的服务了。但领域之间有着明显的隔阂,这就对应着领域边界的上下文。
当我们有了领域之后,就有了一个重要的问题是如何让各个领域之间搭配起来干活。这便是需要驱动来解决问题了,驱动的存在是来磨合领域与领域之间的摩擦的。摩擦指的是领域与领域之间产生了业务冲突。很简单,举一个餐馆的例子来说。两个不同的小区里面都有面馆,都是做刀削面的。这时小区A因为一些原因被封后了,我们就要及时的知道小区B依旧可以吃面的信息。寻求小区B问我们提供服务。这就是领域的摩擦,当然,在两个小区都是解封状态下,谁家面好,去谁家。驱动一次要体现出快速切换服务,提供服务的运行动作。
设计嘛,就要贯穿领域和驱动这个词了,它们都需要合理的设计才能完成庞杂或细致的工作。对于设计我理解不多,但是设计领域的时候,个人认为领域之间应该存在嵌套关系。更能体现出多样性嘛。
2.对于领域驱动框架思考
在此我直接点出个人认为application层和domain层中间应该点出一层来调和应用层和领域层之间的调用。在上面我提到了,如果A小区封了,要知道B小区也有面馆的这一操作来看。这两层之间不能只是接口隔离了。在此我想出使用协议来解决调用问题了,将业务协议到一个平台上,领域去关注这个平台公告板,领取任务,将服务结果返回服务层。这样就可以解决很多框架耦合问题,让开发人员在服务层的开发过程中不在关注领域层的接口设计。
3.用技术来定义规则
我曾经看肖臻老师讲区块链的视频中好像提到这句话,用技术来定义规则。我喜欢这句话,因为我认为它将会是判断一个系统是否智能的关键点。领域驱动设计的初衷是为了解决软件设计的复杂之道,将系统划分,组合,在划分,在组合。将其打磨的更加具有扩展性,高可用,那便是每一个软件工程师应该做的。我相信未来一定会有智能框架来解决服务复杂的问题。