我需要构建一个类似于pub / sub系统的系统。它由在单独的可执行文件或Windows服务中运行的多个子系统或服务组成。
子系统是:
发布/订阅服务
工作人员服务
SignalR和WCF主机
我的问题是
一个例子;工作人员告诉发布/订阅系统向用户发送消息,发布/订阅系统检查为用户打开的频道(假设是SignalR频道),然后它必须通知在IIS中运行的SignalR服务发送消息到用户的浏览器。
观察
答案 0 :(得分:1)
如果问题是如何将SignalR与其他传输桥接,那么有几种解决方案。
在单个服务器上,您可以将它们与Reactive框架自己的pubsub机制连接起来,该机制整齐地封装在Subject类中。
如果您需要扩展到多个服务器,您将需要使用现有的服务总线,或者使用SQL服务器和SqlDependency滚动您自己的简单服务总线。
您还可以将SignalR用作与其他服务器通信的一台服务器上的客户端,以便在它们之间复制邮件。
我建议您查看一些适用于.NET的 Service Bus 技术。
答案 1 :(得分:0)
有一篇文章清楚地解释了如何在.NET应用程序中合并pub / sub设计模式的可能机制。答案在于使用.NET In-Memory分布式缓存并将其群集功能用作发布订阅介质。因为它是集群的,所以你也不必担心停机时间。
基本上您将使用应用程序启动的自定义事件
注册您的活动
public void OnApplicationEvent(object notifId, object data)
{
...
}
_cache.CustomEvent += new CustomEventCallback(this.OnApplicationEvent);
并在需要时点击这些事件
_cache.RaiseCustomEvent("NotificationID", DateTime.Now);
Pub/Sub design pattern in a .NET distributed cache
完全披露:我为Alachisoft工作