用SignalR 2.0開發客服系統[系列4:負載均衡的情況下使用SignalR]

前言

目錄:

用SignalR 2.0開發客服系統[系列1:實現羣發通訊]

用SignalR 2.0開發客服系統[系列2:實現聊天室]

用SignalR 2.0開發客服系統[系列3:實現點對點通訊]

SignalR 2.0作爲一個新的而且強大的通信工具,發佈博客之後得到了很多人的支持,謝謝...也有人對性能和架設等問題提出了各種質疑..真的很感謝..

我特意下載了SignalR 2.0的源碼硬着頭皮用我二流子的英語在微軟官方的Demo裏翻滾..

今天這個負載均衡下使用SignalR..基本完全照搬於微軟的Demo,我就當翻譯+上自己的理解吧   - -,  原文看這裏:

使用SQL server實現持久化

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

使用redis實現持久化

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

今天我們主要講使用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();
    }
  }
}

這樣我們就完成了整個負載均衡情況下的配置.

謝謝大家的支持,我會做的更好..請大家對我二流子的英語多多包含 - -,感謝..希望能有更好的翻譯出來.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章