【发布时间】:2017-06-05 12:04:28
【问题描述】:
MassTransit 声明我们应该为消息合约使用接口:
强烈建议对消息合约使用接口, 根据多年不同水平的经验 开发者经验。 MassTransit 将创建动态界面 消息的实现,确保完全分离 来自消费者的消息合约。
资料来源 : Docs » 使用 MassTransit » Creating a message contract
使用 POCO DTO 代替接口有什么缺点,在使用 MassTransit 进行消息传递的上下文中,接口相对于类的明显优势是什么?
另一方面,NServiceBus 可以使用 POCO,确保不使用域对象等内部类是有意义的,见下文。
来源:NServiceBus » Messaging » Messages, Events and Commands
创建消息时,应遵循以下准则:
- 消息应该是简单的 POCO 对象。
- 消息应尽可能小 可能的。
- 消息应满足单一职责原则。
- 用于其他目的的类(例如域对象、数据访问 对象和 UI 绑定对象)不应用作消息。
【问题讨论】:
-
优点很简单:确保消息合约与消费者完全分离
-
POCO 不会是第二好的吗?我的意思是措辞 - “强烈建议”意味着不使用接口的某种风险或负面后果,我目前看不到。
-
接口只是一个分离层,允许对 POCO 方法的更改只需迁移到一个代码块。整个代码中可能有几十个不同的 save 命令,需要在简单的表格更改上进行编辑,但如果这些命令只是汇集到 Save 界面,你只会需要编辑 1 个实例
-
这是指导,以确保行为不会蔓延到消息合同中。 POCO 的使用当然是允许的,大多数从 NSB 移植的团队不会更改他们的消息程序集并且它们工作得很好。
-
@ChrisPatterson 不再是下一个 C# 接口可以包含功能的情况:-)
标签: c# masstransit event-bus