我必须设计一个连接到WCF服务的客户端系统,以便在数据库上执行读和写操作,并获得通知。
我被告知要使用CQRS模式。
为了举个例子,客户端将连接到一个服务,以执行像Get List of Products和UpdateProduct等操作。他们还可以做一些事情,比如接受托运和拒绝托运(这可能导致客户之间的竞争,而客户是第一个这样做的客户)。只有一个客户可以“接受”一批货或“拒绝”一批货。
因此,我阅读了一些关于CQRS的内容,并理解它将读与写分离开来(使用命令)。但是,如果我使用CQRS,我不确定有几个主要问题:

“产品服务”将是一个CQRS服务,但我在通知服务方面有问题。客户端可以向产品服务发送一条命令,以便得到关于类别X的产品的通知。此命令将更新数据库中的请求。现在假设通知服务每15分钟轮询一次数据库,并检查哪个用户希望被轮询哪个类别,然后将新产品发送给要求就这些产品类别发出通知的用户。如果用户更改了产品的类别,而其他20个用户已经在通知窗口中看到了该产品,那么现在会发生什么呢?我需要一些方法来检测该产品不再属于该类别,并向他们发送类似于的通知“从您的视图中删除该产品”。这听起来不太像通知。这听起来更像是‘请求数据库表的常量相关视图,并且每个更改都应该反映到客户端的屏幕’。我如何做这种通知服务??
发布于 2012-04-28 07:14:35
这可能不是您的具体问题的答案,但可能有助于评估您的应用程序中是否、为什么以及在哪些部分可以(或者应该)使用CQRS?
更确切地说,CQRS既不是应该应用的银弹,也不是贯穿整个应用程序的总体架构风格。
如果将CQRS应用于单个和指定良好的有界上下文,CQRS可以提供许多优点(参见Evans的领域驱动设计)。
你或你的团队应该先问一些问题:
长话短说:不要试图将一种风格强加于整个应用程序。确定BCs,并为每种使用提供最简单的满足需求的解决方案。这很可能是CQRS,但最多只适用于应用程序中的一两个BCs。
将精力集中在应用程序中最复杂的部分上,如果使用CQRS进行形式化和实现,将提供真正的优势。
发布于 2012-05-03 15:57:45
https://stackoverflow.com/questions/10350514
复制相似问题