服务器架构问题。(WCF和N服务总线)

服务器架构问题。(WCF和N服务总线),wcf,architecture,soa,n-tier-architecture,nservicebus,Wcf,Architecture,Soa,N Tier Architecture,Nservicebus,首先,我将描述当前状态: 服务器由多个WCF服务组成,托管在不同机器上的一个或多个win服务中 负责从不同设备接收数据的服务。使用套接字实现与设备的通信。服务实例模式-单例 数据代理服务-负责按请求在中持久化数据和共享。实例模式-单例 配置服务-负责更改配置数据库并使用管理控制台(WPF应用程序,如SSMS)。处理来自控制台、订户管理等的连接。实例模式-单例 客户机访问服务-与上面的客户机管理完全相同,但也向客户机通知新数据,其作用类似于facade to service bus。又是辛格尔顿

首先,我将描述当前状态:
服务器由多个WCF服务组成,托管在不同机器上的一个或多个win服务中

  • 负责从不同设备接收数据的服务。使用套接字实现与设备的通信。服务实例模式-单例
  • 数据代理服务-负责按请求在中持久化数据和共享。实例模式-单例
  • 配置服务-负责更改配置数据库并使用管理控制台(WPF应用程序,如SSMS)。处理来自控制台、订户管理等的连接。实例模式-单例
  • 客户机访问服务-与上面的客户机管理完全相同,但也向客户机通知新数据,其作用类似于facade to service bus。又是辛格尔顿
  • 身份管理服务-检查权限并返回结果。辛格尔顿 所有这些服务都与NServiceBus相连,我真的很喜欢它目前的工作方式

    但是:
    单身汉太多了。主要是因为要使用servicebus,我必须拥有它的单个实例。我不知道也许我可以在会话模式下使用N服务总线,但不知道如何处理所有这些服务都将使用一个队列的问题

    如果我有300多个客户呢?单身汉会变得毫无反应

    我想征求一些评论家对这一切的意见,也许有人可以提出一些建议

    提前感谢。
    亚历克赛

    亚历克赛

    虽然每个进程应该只有一个总线实例,但可以将该实例放在全局可访问的位置(如AsyncPages示例所示),并从非单例对象(如web页面和WCF服务)使用该实例

    另外,让所有服务使用一个队列可能并不合适。如果没有更好地了解您的情况,我会为您标识的每个服务提供一个队列的默认建议

    希望能有帮助。

    Alexey

    虽然每个进程应该只有一个总线实例,但可以将该实例放在全局可访问的位置(如AsyncPages示例所示),并从非单例对象(如web页面和WCF服务)使用该实例

    另外,让所有服务使用一个队列可能并不合适。如果没有更好地了解您的情况,我会为您标识的每个服务提供一个队列的默认建议


    希望能有所帮助。

    每项服务都有自己的队列。我们来看看异步页面示例。理想情况下,我希望与外部客户端通信的服务以会话模式工作。那太好了。看看异步页面examle。这很有趣。所以,若我将总线对象注入到会话式服务实例中,我如何确定该消息是针对具体实例的呢?例如,我们有两个连接的客户端。两者都有自己的课程。然后,他们发送相同类型的消息。如何确定哪个服务实例将处理回调?>如何确定该消息是针对具体实例的?亚历克赛-不知道你在问什么。您是在询问WCF回调还是NServiceBus回调?service bus callabck=)抱歉我的英语不好=)有时难以解释=)NServiceBus将回调到调用的实例:bus.Send(msg.Register(callback);每个服务都有自己的队列。我们来看看异步页面示例。理想情况下,我希望与外部客户端通信的服务以会话模式工作。那太好了。看看异步页面examle。这很有趣。所以,若我将总线对象注入到会话式服务实例中,我如何确定该消息是针对具体实例的呢?例如,我们有两个连接的客户端。两者都有自己的课程。然后,他们发送相同类型的消息。如何确定哪个服务实例将处理回调?>如何确定该消息是针对具体实例的?亚历克赛-不知道你在问什么。您是在询问WCF回调还是NServiceBus回调?service bus callabck=)抱歉我的英语不好=)有时难以解释=)NServiceBus将回调到调用的实例:bus.Send(msg.Register(callback);