2013-03-06 43 views
1

除了延迟之外,是否有一个显着的缺点循环浏览一系列Web服务来发布事件?cqrs事件库调度通过网络服务

Dispatcher(event) { 
    var services = getServices(); 
    for each service in services { 
     callService(service, event); 
    } 
} 

编辑:
与之相对的是什么? - Peter Ritchie

  • 使用Web服务而不是MSMQ或nServiceBus。

其他问题 - 鲁文Bartelink

  • 使用joliver的eventstore。
  • web服务将是webapi restfull服务(内部)或“订阅”到事件的第三方服务。
  • 循环浏览Web服务,因为每个Web服务都是需要分派的地址。
  • 没有C#代码,因为我还没有到那一点。
  • 我仍在评估整个项目的技术,有一个问题,决定把它放在堆栈溢出来看看每个人可能在做什么。从我的研究

补充信息昨日:
在选择通信方式而言,其有效了解企业服务总线(ESB)http://en.wikipedia.org/wiki/Enterprise_service_bus。在.net世界中,nservicebus似乎很受欢迎,但不是免费的,公共交通是免费的,但我在建立和运行样本时遇到了麻烦。 TT

通过他们的家伙公共交通落后的一个消息VS Web服务的一个很好的概述:http://blip.tv/ineta-live/event-driven-architecture-by-chris-patterson-north-dallas-net-ug-on-02-03-2010-3193457

+1

而不是什么? – 2013-03-06 01:31:33

+0

使用什么事件存储/方法。您对Web服务的定义是什么?你为什么要循环。他们都需要吗?你还试过了什么?为什么不把它转换成真正的C#。你是否意识到人们操纵事物的典型方式是让事件的分派是异步的。你打算如此保留它吗? – 2013-03-06 10:23:51

回答

2

发布事件直接从您的用户面临应用层调用各种Web服务可能证明麻烦,如果:

  1. 远程服务不可用,
  2. 远程服务被打破,并返回意外的错误代码,
  3. 远程服务是slooooow和您的用户没有双向一旁等着摹球迷,

通过通过队列发布事件的一些工作程序,resposible用于调用各种Web serivces,您的前端应用程序不必失败由于上述任何。

+0

因此,使用像MSMQ,nServiceBus,公共交通等的东西来坚持事件的某个地方(数据库,文件系统等),并有一个后台应用程序(时间作业,Windows服务等),从某处拉启动Web服务? – 2013-03-06 14:56:41

+0

@ ton.yeung您的调度员将东西放入队列中。您的投影然后运行任意数量的处理器(例如Denormalizers)来响应这些消息。尽管一个这样的处理器的职责是**将数据推送到一个web服务是合理的,但你最好重新调整方向,让任何需要的东西将其从队列或主题/ pub-sub事物中拉出来。 – 2013-03-07 09:18:15

+0

@ ton.yeung:Excatly。 MSMQ或RabbitMQ都可以用作持久队列,既能够存储消息,又不需要任何辅助数据库。 NServiceBus,Mass Transit和Rebus是使您能够轻松发送和接收来自这些队列的消息的框架。 – 2013-03-07 10:23:26