在分布式系统中为消息提供共享和专用程序集或库是否常见?

时间:2012-10-26 17:42:01

标签: domain-driven-design .net-assembly cqrs distributed-system masstransit

我正在谈论分布式域驱动设计背后的一些概念,我正在构建一个概念证明。我有三个C#解决方案,在整个系统中负有特定的责任。

我的解决方案是:

  • 写模型(从客户端接收命令并创建和发送事件)
  • 读取模型(从写入模型接收事件,创建数据库并向客户端公开DTO服务,可能是两个独立的解决方案)
  • 客户端(调用服务以获取所需数据并将命令发送到写模型)

所有三种解决方案都通过服务总线使用消息传递(命令,事件)。 (在我的情况下是MassTransit)。

我的主要问题是:通常的做法是使用消息创建程序集并让每个解决方案引用该程序集?

额外信用:在这个POC中,我有什么看似奇怪或有问题的吗?在创建这种类型的系统时我应该注意的任何其他信息?

1 个答案:

答案 0 :(得分:4)

  

通常的做法是使用消息创建一个程序集   每个解决方案引用该程序集?

是。这通常是消息传递系统的常见做法。例如,许多NServiceBus样本采用这种方法。将此程序集视为代表您的合同。在基于不同平台构建的系统中,此表示形式将以XSD架构或其他一些架构定义机制的形式出现。

  

我在做什么这看起来很奇怪或有问题   POC?创建此类型时我应该注意的任何其他信息   一个系统?

到目前为止,一切似乎都适合CQRS。公平地说,我应该提一下,将CQRS作为一个银弹及其周围的结构系统很容易被带走。将CQRS放在一起通常是明智的决定。继续关注业务领域,并使用CQRS作为实现系统的架构风格,而不是指导其模型。