C# cqrs事件存储通过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

除了延迟之外,通过web服务列表循环发布事件是否存在显著的缺点

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)