【发布时间】:2012-05-08 04:40:29
【问题描述】:
我必须设计一个连接到 WCF 服务的客户端系统,以对数据库执行读写操作,并获得通知。
有人告诉我使用 CQRS 模式。
举个例子,客户端将连接到服务以执行获取产品列表和更新产品等操作。他们还可以执行 Accept Shipment 和 Reject Shipment 之类的操作(这可能会导致首先执行此操作的客户之间发生竞争)。只有一个客户可以“接受”货件或“拒绝”货件。
所以我阅读了一些关于 CQRS 的内容,并理解它将读取与写入分离(使用命令)。但是,如果我使用 CQRS,我不确定一些主要问题:
-
如果我在 WCF 服务上使用 CQRS 模式 - 我可以指望在数据库上同步完成的事情吗?我有点困惑,因为我不希望服务是单线程的(以支持未来的可扩展性),但另一方面 - 我如何确保服务上的写操作以正确的顺序执行?甚至读操作? CQRS 模式是否保证有序处理? (有人告诉我here CQRS 模式使用“更新”队列来更新离线处理请求)。
-
使用 CQRS 能消除并发问题吗?
-
我是否仍应在与数据库交互的所有命令处理程序中使用“TransactionScope”?
-
我花了一个多星期的时间试图了解如何为客户实施通知服务,但没有成功。我有这个design:
“产品服务”将是 CQRS 服务,但通知服务有问题。客户端可以向产品服务发送命令以通知 X 类产品。该命令将更新数据库中的请求。现在假设通知服务每 15 分钟轮询一次数据库,并检查哪个用户希望轮询哪个类别,然后将新产品发送给请求就这些产品类别进行通知的用户。 如果用户更改了产品的类别并且其他 20 位用户已经在他们的通知窗口中看到了该产品,现在会发生什么情况? 我需要一些方法来检测产品不再属于该类别,并向他们发送通知,例如 '从您的视图中删除该产品'。 这听起来不太像通知。这听起来更像是“请求一个数据库表的 CONSTANT RELEVANT 视图,并且每个更改都应该反映到客户端的屏幕上”。 这种通知服务怎么做??
【问题讨论】:
标签: wcf notifications cqrs