SignalR2.0开发实例之——负载均衡
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..
做过负载均衡的应该一眼就能看出效果主要做的什么,这里我们就不做过多的解释了..
首先我们来看看微软给出的实现参考图:
使用的先决条件
Microsoft SQL Server 2005或更高版本。 它不支持SQL Server精简版或SQL Azure数据库。 (如果您的应用程序是托管在Azure,你懂的,考虑其他的版本代替吧.)
概述
详细的教程之前,这里是一个快速概述你将做什么。
- 创建一个新的空数据库。 集线器Hub将在这个数据库创建必要的表。
- 将这些NuGet包添加到您的应用程序:
- 创建一个SignalR应用程序。
- 添加以下代码来启动。 配置启动器(记得我们之前第一篇文章中的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();
- }
- }
- }

这样我们就完成了整个负载均衡情况下的配置.
参考资料:
http://www.cnblogs.com/GuZhenYin/p/4635675.html
SignalR2.0开发实例之——负载均衡的更多相关文章
- SignalR2.0开发实例之——设置时间、后台其他地方使用集线器、使用自己的连接ID
一.连接的生命周期设置: 如下: // 该值表示连接在超时之前保持打开状态的时间长度. //默认为110秒 GlobalHost.Configuration.ConnectionTimeout = T ...
- SignalR2.0开发实例之——私聊
一.前言 继续上一章的补充,这章介绍使用私聊的功能.主要通过一个方法 Clients.Client(Context.ConnectionId).showMessage(msg); SignalR框 ...
- SignalR2.0开发实例之——群发消息
一.前言 ASP .NET SignalR 是一个ASP .NET 下的类库,可以在ASP .NET 的Web项目中实现实时通信.什么是实时通信的Web呢?就是让客户端(Web页面)和服务器端可以互相 ...
- SignalR2.0开发实例之——创建房间聊天
SignalR作为一个强大的集线器,已经在hub里面集成了Gorups,也就是分组管理,使用方法如下: //作用:将连接ID加入某个组 //Context.ConnectionId 连接ID,每个页面 ...
- Nginx+Tomcat多实例及负载均衡配置
Nginx+Tomcat多实例及负载均衡配置 采用nginx的反向代理负载均衡功能,配合后端的tomcat多实例来实现tomcat WEB服务的负载均衡 01 安装nginx服务 安装所需的pcre库 ...
- Nginx 配置实例-配置负载均衡
Nginx 配置实例-配置负载均衡 0. 实例效果 1. 两个 tomcat 的安装(可选) 1.1 tomcat8081 的安装 1.1.1 tomcat8081 安装包的装备 1.1.2 tomc ...
- [转]Haproxy 1.5.0 正式发布,Web 负载均衡
From : http://www.oschina.net/news/53070/haproxy-1-5-0 经过 4 年的不懈努力,HAProxy 1.5.0 终于发布了! 相对于 1.4 版本来说 ...
- 一篇对OAuth2.0开发实例的介绍
今天看到了博友对SSO的文章,SSO单点登录的讲解突然想写一篇关于OAuth2.0用户授权的介绍. 应用场景:在APP或者网页接入一些第三方应用时,时长会需要用户登录另一个合作平台,比如QQ,微博,微 ...
- tomcat多实例及负载均衡
[root@localhost ~]# tar fx apache-tomcat-8.5.40.tar.gz [root@localhost ~]# tar fx jdk-8u191-linux-x6 ...
随机推荐
- tomcat可以访问到软链接设置
tomcat/conf/context.xml设置<Context allowLinking="true"> 就可以啦.
- wdcp/wdlinux一键包的php5.3版本添加Zend.so 和Soap.so
Wdcp 安装soap扩展 1.首先进入 soap模块的安装文件,wdcp安装包解压对应的php中有,如:/root/miloxi/lanmp/php-5.5.10/ext/soap 2.执行: (1 ...
- Ajax 技术原理(转)
Ajax 技术原理 2010-01-04 原文出处:http://www.nowamagic.net/ajax/ajax_AjaxPrinciple.php 在写这篇文章之前,曾经写过一篇关于AJAX ...
- python 的内置函数(1)
19.内置函数: abs():求绝对值 bool():求一个值是True or False ,其中False值有 0 ,空字符串'',None,空 ...
- Python文件处理之文件读取方式(二)
Python的open文件的读取方式有以下几种方法: read([size]):读取文件,如果传了size参数,则读取size字节,否则读取全部 readline([size]):读取一行 readl ...
- jquery编写插件
jquery编写插件的方法 版权声明:作者原创,转载请注明出处! 编写插件的两种方式: 1.类级别开发插件(1%) 2.对象级别开发(99%) 类级别的静态开发就是给jquery添加静态方法,三 ...
- javaWeb实现使用邮箱邮件找回密码功能
JSP+Jmail+JavaBean 发邮件(转)2010-08-23 18:052007年04月14日 14:32/* * SendMail.java * * Created on 2007年3月3 ...
- Android 安装和启动另外一个应用
有时候一个应用需要启动另外一个应用来完成操作,比如在某些应用中打开闹钟,相机,日历等等. 启动或安装相应的应用的方法: Step1:判断是否安装目标应用.只要知道目标应用的安装包名就可以通过判断&qu ...
- HTML5 + CSS3 + JavaScript
http://www.programmer.com.cn/14761/#more-14761 文/李晶 随着互联网产业的爆炸式增长,与之伴生的Web前端技术也在历经洗礼和蜕变.尤其是近几年随着移动终端 ...
- 【HDOJ】3316 Mine sweeping
简单BFS. #include <iostream> #include <cstdio> #include <cstring> #include <cstdl ...