C# cqrs事件存储通过web服务发送到
除了延迟之外,通过web服务列表循环发布事件是否存在显著的缺点C# cqrs事件存储通过web服务发送到,c#,.net,cqrs,C#,.net,Cqrs,除了延迟之外,通过web服务列表循环发布事件是否存在显著的缺点 Dispatcher(event) { var services = getServices(); for each service in services { callService(service, event); } } 编辑: 与什么相反彼得·里奇 使用web服务而不是MSMQ或nServiceBus 其他问题-鲁本·巴特林 使用joliver的eventstore webse
Dispatcher(event) {
var services = getServices();
for each service in services {
callService(service, event);
}
}
编辑:与什么相反彼得·里奇
- 使用web服务而不是MSMQ或nServiceBus李>
- 使用joliver的eventstore李>
- webservice可以是webapi restfull服务(内部)或“订阅”事件的第三方服务李>
- 通过web服务循环,因为每个web服务都是需要调度的地址李>
- 还没有c代码,因为我还没有达到这一点李>
- 我仍然在评估整个项目的技术,有一个问题,决定把它放在stack overflow上,看看每个人都在做什么
就选择通信方法而言,了解企业服务总线(ESB)很有用。在.net世界中,nservicebus似乎很受欢迎,但不是免费的,公共交通也是免费的,但我在构建和运行示例时遇到了麻烦。T.T
公共交通背后的一位人员对消息传递与web服务进行了全面的概述:通过直接从面向用户的应用程序层调用各种web服务来发布事件可能会遇到麻烦,如果:
通过将事件通过队列发布到某个负责调用各种web服务的工作应用程序,前端应用程序不必因上述任何原因而失败。使用什么事件存储/方法。您对web服务的定义是什么。你为什么循环。他们都需要吗。你还试过什么。为什么不把它转换成真正的C#。您是否知道,人们操纵事件的典型方式是使事件的调度是异步的。你打算保持这种状态吗?所以使用MSMQ、nServiceBus、大众交通等。。若要将事件粘贴到某个位置(DB、文件系统等),并使用后台应用程序(chron作业、windows服务等),请从某处拉出并启动web服务?@ton.yeung您的调度程序将内容放入队列中。然后,您的投影运行任意数量的处理器(例如,反规范化器)以响应消息。虽然这样一个处理器的职责是将数据推送到Web服务中,这是正确的,但您最好重新定位,让任何需要的东西从队列或主题/发布子对象中提取数据。@ton.yeung:Excatly。MSMQ或RabbitMQ都可以作为持久队列使用,都能够在没有任何辅助数据库的情况下存储消息。NServiceBus、Mass Transit和Rebus都是框架,使您可以轻松地从这些队列发送和接收消息。@RubenBartelink:同意。如果web服务不在OPs控制范围内(合作伙伴、在线API等),推送可能是唯一的方式。at-Jørn@ton.yeung BTW I+1'd并完全同意Jørn的回答-通过队列管理调度允许您处理推送过程中的故障和其他不一致。记住,一旦事件存储在事件存储中,它就发生了——剩下的就是让世界与新现实同步。话虽如此,请仔细阅读,保持开放的心态并满足您的客户要求是很重要的(下面引用了几页;sry)