我承认我仍然是一个DDD的新手,在CQRS中更是如此。我也意识到DDD和/或CQRS可能不是解决所有问题的正确方法。不过,我喜欢校长,但在当前项目的背景下有一些问题。用于具有多个数据库的复合.NET应用程序的DDD/CQRS
该解决方案是一个模拟器,可根据当前配置生成性能数据。管理员可以创建和修改模拟规范。测试人员设置一些环境条件并运行模拟器。结果被捕获,汇总并报告。
解决方案由3个组件区组成,每个组件区都有自己的用例,域逻辑和支持数据结构。因此,模块化设计似乎很有吸引力,作为分离逻辑和分离问题的一种方式。
- 第一个区域是管理方面,它允许用户创建和修改规范。这将是一个CRUD重型“模块”。
- 第二个区域将用于执行模拟。领域模型将类似于第一个领域,但为执行模拟而优化,而不是提供便于编辑的模型。
- 第三方面是报告。
我的第一本能是遵循这些线条并创建三个封装每个区域的域层的模块(程序集)。我是否应该有三个独立的数据库?也许超过三个支持写与读?
我收集这可能是首选的CQRS,但我不知道如何去做。在我看来,CQRS提出了一组移动数据的后端过程。但是如果情况如此,并且数据持久性是交叉的(如DDD所示),那么我的数据访问代码是否需要知道所有域对象?如果是这样,那么分离模块是否有好处?
最后,我之前没有提到的是,规范被认为是“草案”,直到发布,然后可用于仿真。我的PublishingService需要知道第一个和第二个领域的领域模型,以便当它响应SpecificationPublishedEvent时,它可以读取规范,翻译模型并将其保留以供执行。这让我觉得我毕竟没有三个边界上下文。或者我在分析中错过了什么?
发布服务又是什么?这是执行模拟的服务吗?或者是PublishingService与事件发布者相同? – 2011-05-18 12:15:45