如何使用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在数据库里做了些什么。

 

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

转载于:https://www.cnblogs.com/everylittlebit/p/5358728.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值