• 如何使用SQL Server实现SignalR的横向扩展


    一般来说,Web应用的扩展有两种:scale up(纵向扩展)和scale out(横向扩展)。

    1、纵向扩展

    使用配置高(大内存,多处理器)的服务器或者虚拟机。

    2、横向扩展

    使用多个服务器(Web Farm)。

    SignalR支持横向扩展,可以通过Backplanes(Azure Service Bus、Redis、SQL Server)来实现。

    比如SignalR实现的一个简单的聊天页面, 部署到一个服务器,http://192.168.0.1/index.html。打开多个网页访问这个地址,任意页面输入的消息同时出现在各个页面上。

    如果部署到另一个服务器http://192.168.0.2/index.html,一个网页打开http://192.168.0.1/index.html,另一个网页打开http://192.168.0.2/index.html。分别发送消息,却发现没有同步。因为SignalR不支持不同服务器上的客户端之前通信。即使部署在同一个服务器端的不同端口,不同端口的页面间消息也不可以传递。

    下面介绍如何使用SQL Server实现不同服务器上同一套Web应用间的消息传递。只需在SignalR实现的一个简单的聊天页面的Startup.cs添加两行代码(第5、6行)。

        public class Startup
        {
            public void Configuration(IAppBuilder app)
            {
                string sqlConnectionString = WebConfigurationManager.ConnectionStrings["signalr"].ConnectionString;
                GlobalHost.DependencyResolver.UseSqlServer(sqlConnectionString);
                app.MapSignalR();
            }
        }
    

    添加代码之前,需要NuGet安装Microsoft.AspNet.SignalR.SqlServer并在Web.Config中配置数据库连接字符串。

    重新编译然后部署到两个服务器。http://192.168.0.1/index.html和http://192.168.0.2/index.html之间就可以通信了。

    您可以用SQL Server Management Studio打开对应的数据库,可以SignalR在数据库里做了些什么。

    本文如有不妥之处,请见谅!

  • 相关阅读:
    LeetCode 12. Integer to Roman
    个人博客09
    个人博客08
    人机交互之我的输入法
    学习进度条(第六周)
    《梦断代码》阅读笔记02
    个人博客07
    学习进度条(第五周)
    个人博客06
    个人博客05
  • 原文地址:https://www.cnblogs.com/everylittlebit/p/5358728.html
Copyright © 2020-2023  润新知