架构:简单的CQS

时间:2011-08-02 19:58:24

标签: c# domain-driven-design command cqrs

我正在考虑将CQS应用于我的ASP.NET MVC网站,但这只是一件非常简单的事情。我不是指CQRS,因为我想为查询和命令部分使用相同的数据源,因此我不需要事件源和其他更复杂的模式。

所以,我想到的是:

  • 使用相同的数据库进行查询和命令部分
  • 对于查询部分,使用实体框架和WCF数据服务公开数据库视图,以便将特定视图返回给客户端,查询数据变得非常容易
  • 用于命令部分,使用实体框架和单向WCF服务公开数据库表,并使用DDD原则。

我想要达到的主要目标是:

  • 由单向服务操作执行并由富域模型处理的简单命令,客户端只需传递执行命令所需的数据
  • 灵活查询简单视图,专为客户的特定UI而设计

这有意义吗?

1 个答案:

答案 0 :(得分:9)

所以,回答你的问题,是的,我认为这是有道理的。

我不确定你还在寻找什么。我认为你采取的方法是有道理的,应该给你你想做的事。

在我看来,CQS和CQRS非常相似,其中CQRS具有单独的读写存储的概念(并且有些人认为写存储甚至可能不是必需的)。事件采购实际上不是CQRS的一部分 - 它可以说是一个附加组件,可以很好地适应CQRS的分布式特性。

由于您使用视图展平数据,因此您放弃使用方法的一些方法是数据的可扩展性。但如果您的应用不需要它,那么就没有问题了。

此外,阅读Udi Dahan article何时避免CQRS可能会有用。它可能有助于证明您的决定。当他释放它时引起了不小的轰动。但在他和Greg Young之间,他们是CQRS的专家。

我不确定我是否回答了你的问题或帮助过,但祝你的项目好运!我希望这会有所帮助。