使用Singleton vs单独的Signalr Hub聊天实现
我只是想知道为什么 Microsoft 推荐的大餐 - 服务器 - 聊天解决方案是初始化信号R中心的推荐解决方案。 从技术上讲,所有C#代码均在服务器上执行,因此也有可能与单身人士实现聊天:
public class MySingleton
{
public event Action<string> OnBroadcast
public void Send(string msg)
{
OnBroadcast.Invoke(msg);
}
}
在impoint的Blazor-component中,我消耗了此单例,订阅了该事件,并调用 send(...)
。
为什么我应该与单独的Signalr Hub意识到此聊天?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
在您链接的文档中,Microsoft不建议您使用普通SignalR Hub进行聊天应用程序,他们正在提供有关如何使用Azure SignalR服务的文档;付费的Azure服务可以在多个服务器实例中简化使用SignalR。使用Singleton,您不需要集线器,但是如果您的Web应用程序在负载平衡器后面有多个实例,则它将无法使用。
如果您只有一个Web应用程序实例,并且永远不会扩展到其他实例,那么Singleton方法可能会正常工作。
In the document you linked, Microsoft isn't recommending you use a normal SignalR Hub for a chat application, they are providing documentation on how you can use Azure SignalR Service; a paid Azure service that simplifies using SignalR across multiple server instances. With a singleton you don't need a hub, but it won't work if your web app has multiple instances behind a load balancer.
If you only have one web app instance and you will never expand to additional instances, then the singleton approach would probably work fine.