2009-12-18 53 views
0

首先我将描述当前状态:
服务器由几个WCF服务组成,托管在不同机器上的一个或多个win服务中。服务器体系结构问题。 (WCF + NServiceBus)

  1. 服务负责从不同设备接收数据。与设备的通信使用套接字来实现。服务实例模式 - 单例。
  2. 数据代理服务 - 负责按请求保存数据和共享。实例模式 - 单例。
  3. 配置服务 - 负责更改配置数据库并使用管理控制台(WPF应用程序,如SSMS)。处理来自控制台,订户管理等的连接。实例模式 - 单例。
  4. 客户端访问服务 - 与上述客户端管理非常相似,但也可以向客户端通知新数据,并且像服务总线一样扮演门面的角色。再单身。
  5. 身份管理服务 - 检查权限并返回结果。辛格尔顿。

所有这些服务都与NServiceBus连接,我真的很喜欢它现在的工作方式。

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

如果我将有300+客户呢?单身可以变得没有反应..

我想问一些关于这一切的批评,也许有人可以建议一些东西。

在此先感谢。
阿列克谢

回答

4

阿列克谢,

虽然你应该只有每个进程总线的一个实例,你可以把例如在全球可访问的地方(如图所示AsyncPages样本中),并使用从非-singleton对象,如网页和WCF服务。

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

希望有所帮助。

+0

每个服务都有自己的队列。将看看异步页面示例。理想情况下,我希望与外部客户进行通信的服务能够在会话模式下工作。那太好了。 – 2009-12-19 13:27:44

+0

看着异步页面检查。挺有趣的。所以,如果我注入总线对象会话服务实例,我怎么能确定该消息是针对具体实例?例如,我们有2个连接的客户端。两人都有自己的会议。然后他们每个发送相同类型的消息。如何确定什么服务instanse将处理回调? – 2009-12-19 13:43:59

+0

>我如何确定该消息是针对具体实例的? Alexey - 不知道你在问什么。你问的是一个WCF回调,还是一个NServiceBus回调? – 2009-12-19 18:54:43