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

前言

交流群:195866844

目录:

用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();
        }
    }
}

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

谢谢大家的支持,我会做的更好..请大家对我二流子的英语多多包含 - -,感谢..希望能有更好的翻译出来.

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏信安之路

对oracle数据库的安全测试

Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。...

601
来自专栏杨建荣的学习笔记

关于Flashback的小测试(r10笔记第15天)

对于Oracle的Flashback来说,在11g里面有了一个很细微的变化,可以说是一个很不错的福利,那就是开启闪回不需要重启数据库至mount状态下,...

3164
来自专栏杨建荣的学习笔记

Data Guard实现故障自动切换(二)(r11笔记第40天)

今天下午我的一个朋友碰到了一个Data Guard的问题,大体是主备网络出现问题,因为环境中配置了自动切换,结果备库就自动切换为了主库,这样就成了“双主”...

34110
来自专栏GuZhenYin

Entity Framework Core 之数据库迁移

前言 最近打算用.NET Core写一份开源的简易CMS系统,来练练手 所以又去深入研究了一下Entity Framework Core  发现其实有些细节园子...

3575
来自专栏跟着阿笨一起玩NET

创建Windows服务(Windows Services)N种方式总结

最近由于工作需要,写了一些windows服务程序,有一些经验,我现在总结写出来。 目前我知道的创建创建Windows服务有3种方式: a.利用.net框架类Se...

311
来自专栏杨建荣的学习笔记

oracle工具集初探(r4笔记第8天)

今天无意中看了下ORACLE_HOME/bin下面的东西,发现里面还是存在不少的东西。除了常用的sqlplus,tnsping,rman,exp/expdp,i...

2504
来自专栏三杯水

使用ELK分析腾讯云CLB日志

最近在使用腾讯云,想对访问日志进行收集与分析,发现CLB(负责均衡)日志只能保存到COS上面,而且是每个CLB没小时压发送个gz压缩包到COS。

1063
来自专栏jeremy的技术点滴

分发JavaWeb项目之docker方案

3365
来自专栏张戈的专栏

CCKiller:Linux 轻量级 CC 攻击防御工具

很久以前分享过一个CC攻击的防御脚本,写得不怎么样,不过被51CTO意外转载了。博客从此走上了经常被人拿来练手的不归之路。当然,还是有不少朋友在生产环境使用,并...

9320
来自专栏大神带我来搬砖

做大数据再不用提心吊胆了!

前几天,家住北京市朝阳区的程序员诸葛建国非常郁闷,他突然接到客户电话,说公司网站没法正常工作了,登上服务器一看,他大吃了一惊——服务器的硬盘满了!! 当时诸葛...

2756

扫码关注云+社区