使用WCF为它定制ServiceBus和“适配器”

时间:2009-10-13 16:10:10

标签: wcf architecture performance

目前正在开发一个服务器,用于监控对象的卫星。 在当前状态下,它在高负载情况下非常有效和稳定。 如果使用负载平衡,服务器必须能够每天处理50 + mln消息或更多消息。 它由gps数据网关(singleton),“databroker”(singleton)组成,负责持久化数据,根据请求提供数据,并向订户提醒新数据,登录服务(每次呼叫)和客户服务(每次会话),负责订阅和使用Web界面和富客户端。

在这种状态下,我可以预见到这些问题:

  1. 如果添加新服务,复杂性会增加。
  2. 紧耦合。
  3. 难以配置。
  4. 在未来的bl服务中处理订阅等的大量低级代码(例如报告)。
  5. 要解决这些问题,我想使用像ServiceBus这样的东西 MS解决方案对于我们的客户来说是昂贵的,NServiceBus由于其开源来源(以及源代码中的Class1 = D)而被要求避免使用,因此令我感到害怕。 所以我决定编写自己的简单总线,并遇到了解决和订阅不同类型服务(单例,每个会话,每次调用)的问题,并且还需要负载平衡。

    我找到了相当优雅的解决方案:使用“适配器”作为总线 - wcf服务,用于解决使用服务的一些特定问题 - 比如负载平衡。因此总线只会在它们之间看到适配器和路由消息,并且它们将进一步转发消息。但我关注性能和整体想法.. 非常感谢听到关于所有这些东西的想法=)
    PS总线和适配器使用MSMQ进行通信,但其他服务可以使用http,tcp绑定 PS2对不起,我的英文,不是我的母语=)

3 个答案:

答案 0 :(得分:1)

您可以尝试使用“sql service broker”作为服务总线

http://javiercrespoalvez.com/2009/03/using-sql-service-broker-in-net.html

博客文章还提供了您可以尝试的其他服务总线的链接。

答案 1 :(得分:1)

我可能只是把死人带回来但是如果你仍然想要实现自己的公共汽车,这些链接可能会派上用场(在设计层面):

http://msdn.microsoft.com/en-us/magazine/cc500646.aspx

http://msdn.microsoft.com/en-us/magazine/cc546553.aspx

我找到了一些关于如何通过中央路由器服务动态注册子服务并将消息从客户端路由到它们的问题的答案

答案 2 :(得分:0)

感谢所有回复=)我能够说服老板使用NServiceBus。 (在周末创建工作总线原型后=)。现在它非常适合系统=)