级联故障和雪崩
|
这里对BoundedContext再说明一下:
BoundedContext的更多信息,可以参考sculptor的文档[4],根据实际的情况可以添加对应的部分,如DomainEvent、Repository等。 个人觉得这里BoundedContext还没有涉及到Ubiquitous Language,还是需要对应的辅助设计文档,需要交代相关的项目背景,技术决策等等。个人是推荐采用C4架构设计作者编写的 《Visualise, document and explore your software architecture》[5],非常实用,作为DDD架构设计文档,完全没有问题。 文章的一开头我们说到之前的DDD DSL更多的是代码生成器,如果是代码生成器,那么生成的代码一定有对应的规范和结构等,如entity、value object,service,repository保存的目录,生成的代码可能还包括一定的Annotation或者interface,标准字段等等。当然这里我们不讨论代码生成器的问题,但我们希望大家的DDD架构设计还是要采用一定的规范目录结构,这里有几个标准推荐给大家:
这三者其实出发点都是一致的,就是在代码层面来描述DDD,核心是一些annotation、interface,base class,当然也包括推荐的package结构。 ContextMapper的其他特性 讲到这里,其实DDD整体上来说,我们已经阐述清楚:Domain划分、整体Domain的BoundedContext拓扑图和关联关系、BoundedContext具体定义和架构设计文档规范。但是ContextMapper还提供了UserStory和UseCase对应的DSL,让我们来看一下。 UserStory
好多同学都问UserStory如何写,有了这个DSL,同学们再也不用担心如何编写UserStory啦。这个DSL比较明确的,主要是三元素:作为 “aaa",我希望能"xxx",我希望能”yyyy",以便 "zzz", 也是符合UserStory的典型三要素:角色、活动和商业价值。 大家可以看到Map图中包含的各个BoundedContext名称,然后描述了它们之间的关系。在关联关系描述中,涉及到对应的描述。前面我们说明BoundedContext为Domain的具体系统和应用的承载,所以涉及到对应的技术实现。如HTTP REST API、RPC、Pub/Sub等,如blog系统为Medium的话,那么implementationTechnology = ”REST API"。还有exposedAggregates,表示暴露的聚合信息,如class对象和字段,服务接口等,方便通讯双方做对接,这个我们会在BoundedContext中进行介绍。 BoundedContext
在ContextMap中我们描述了它们之间的关联关系,接下来我们要进行BoundedContext的详细定义。BoundedContext包含的内容相信大多数同学都知道,如Entity, ValueObject,Aggregate,Service,Repository、DomainEvent等,这个大家应该都比较熟悉。这里我们给出一个ContextMapper对BoundedContext的代码,如下: (编辑:平顶山站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |

