用SignalR 2.0开发客服系统[系列4:负载均衡的状况下使用SignalR]

前言

交流群:195866844html

目录:redis

用SignalR 2.0开发客服系统[系列1:实现群发通信]

用SignalR 2.0开发客服系统[系列2:实现聊天室]

用SignalR 2.0开发客服系统[系列3:实现点对点通信]

 

 SignalR 2.0做为一个新的并且强大的通讯工具,发布博客以后获得了不少人的支持,谢谢...也有人对性能和架设等问题提出了各类质疑..真的很感谢..sql

我特地下载了SignalR 2.0的源码硬着头皮用我二流子的英语在微软官方的Demo里翻滚..数据库

今天这个负载均衡下使用SignalR..基本彻底照搬于微软的Demo,我就当翻译+上本身的理解吧   - -,  原文看这里:app

使用SQL server实现持久化负载均衡

http://www.asp.net/signalr/overview/performance/scaleout-with-sql-serverasp.net

使用redis实现持久化工具

http://www.asp.net/signalr/overview/performance/scaleout-with-redispost

今天咱们主要讲使用SQL server..性能

 

开发环境

 开发工具:VS2013 旗舰版

 数据库:Sql Server2008

 操做系统:WIN7旗舰版

 

正文开始

老规矩,咱们先来看看实现后的效果:

 

作过负载均衡的应该一眼就能看出效果主要作的什么,这里咱们就不作过多的解释了..

 

首先咱们来看看微软给出的实现参考图:

 

使用的先决条件

Microsoft SQL Server 2005或更高版本。 它不支持SQL Server精简版或SQL Azure数据库。 (若是您的应用程序是托管在Azure,你懂的,考虑其余的版本代替吧.)

 

概述

详细的教程以前,这里是一个快速概述你将作什么。

  1. 建立一个新的空数据库。 集线器Hub将在这个数据库建立必要的表。
  2. 将这些NuGet包添加到您的应用程序:
  3. 建立一个SignalR应用程序。
  4. 添加如下代码来启动。 配置启动器(记得咱们以前第一篇文章中的Owin么?)

 

下面就开始第一步

配置数据库:

 首先咱们来建立一个库为SignalRTable

以下图:

 

 

而后,打开数据库代理(这是微软给的建议,可不开,微软给出的缘由是:服务代理提供本机支持SQL Server消息和队列,使其接收更新更有效率。)

可使用SQL语句查询是否开启了数据库代理(新库默认是关闭的) SQL语句以下:

SELECT [name], [service_broker_guid], [is_broker_enabled]
FROM [master].[sys].[databases]

 

可使用以下SQL语句开启你数据库的代理服务:

ALTER DATABASE 你的库名 SET ENABLE_BROKER

 

开始配置项目

我这里直接拿个人第一个Demo来配置了,首先你要引用

using Microsoft.AspNet.SignalR.SqlServer;

这个类库,..若是没有的话能够经过NuGet去下载.

任何Hub中的代码都不须要修改,上面我提到过,启动器Owin,咱们这里直接进入到Owin中,加入以下代码:

using System;
using System.Threading.Tasks;
using Microsoft.Owin;
using Owin;
using Microsoft.AspNet.SignalR;
using Microsoft.AspNet.SignalR.SqlServer;

[assembly: OwinStartup(typeof(SignalRTest.MyStartup))]

namespace SignalRTest
{
    public class MyStartup
    {
        public void Configuration(IAppBuilder app)
        {
            //加入以下代码,Sqlconn为你的SQL数据库链接字符串.
            string sqlconn = "您的SQL数据库联接字符串";
            GlobalHost.DependencyResolver.UseSqlServer(sqlconn);

            //初版Demo中咱们一直只有这句代码.
            app.MapSignalR();
        }
    }
}

 

这样咱们就完成了整个负载均衡状况下的配置.

谢谢你们的支持,我会作的更好..请你们对我二流子的英语多多包含 - -,感谢..但愿能有更好的翻译出来.

相关文章
相关标签/搜索