【问题标题】:Server architecture question. (WCF+NServiceBus)服务器架构问题。 (WCF+NServiceBus)
【发布时间】:2010-12-28 02:27:47
【问题描述】:

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

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

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

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

如果我有 300 多个客户怎么办?单身人士可能会变得反应迟钝..

我想请教一些关于这一切的批评者,也许有人可以提出一些建议。

提前致谢。
阿列克谢

【问题讨论】:

    标签: wcf architecture soa n-tier-architecture nservicebus


    【解决方案1】:

    阿列克谢,

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

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

    希望对您有所帮助。

    【讨论】:

    • 每个服务都有自己的队列。将查看异步页面示例。理想情况下,我希望与外部客户端通信的服务以会话模式工作。那太好了。
    • 查看了异步页面示例。挺有趣的。因此,如果我将总线对象注入会话服务实例,我如何确定该消息是针对具体实例的?例如,我们有 2 个连接的客户端。两者都有自己的会话。然后他们各自发送相同类型的消息。如何确定哪个服务实例将处理回调?
    • > 我如何确定该消息是针对具体实例的? Alexey - 不知道你在问什么。你问的是 WCF 回调,还是 NServiceBus 回调?
    • 服务巴士 callabck=) 抱歉我的英语不好=) 有时很难解释=)
    • NServiceBus 会回调到调用的实例: Bus.Send(msg).Register(callback);
    猜你喜欢
    • 2013-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-30
    • 2011-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多