SignalR

简介: 原址: http://www.cnblogs.com/shanyou/archive/2012/07/28/2613693.htmlSignalR是什么?    SignalR是一个继承的客户端与服务器库,基于浏览器的客户端和基于ASP.NET的服务器组件可以借助它来进行双向多步对话,换句话说,该对话可不受限制的进行单个无状态请求/响应数据交换;它将继续,直到明确关闭。

原址: http://www.cnblogs.com/shanyou/archive/2012/07/28/2613693.html

SignalR是什么?  

  SignalR是一个继承的客户端与服务器库,基于浏览器的客户端和基于ASP.NET的服务器组件可以借助它来进行双向多步对话,换句话说,该对话可不受限制的进行单个无状态请求/响应数据交换;它将继续,直到明确关闭。对话通过永久连接进行,允许客户端和服务器发送多个消息,并允许服务器做出相应答复,值得注意的是,还允许服务器向服务端发送异步消息,它和Ajax类似,都是基于现有的技术。本身时一个复合体。一般情况下,SignalR会使用JS的长轮询(long polling),实现客户端和服务端通信。在WebSockets出现以后,SignalR也支持WebSockets通信。当然SignalR也使用了服务端的任务并行处理技术以提高服务器的扩展性。它的目标整个.NET Framework平台,它也不限Hosting的应用程序,而且还是跨平台的开源项目,支持Mono2.10+,觉得它变成时Web API的另一种实作选择,但是它在服务端处理联机的功能上比ASP.NET MVC的Web API要强多了,更重要的是,它可以在Web Form使用

  SignalR内的客户端库(.NET/JS)提供了自动管理的能力,开发人员只需要直接使用SignalR的Client Library即可,同时它的JS库和JQuery完美整个,因此能直接与像JQuery或Knockout.js一起使用

SignalR内部两类对象:

    1.Persistent Connection(HTTP持久链接):持久性连接,用来解决长时间连接的能力,而且还可以由客户端主动向服务器要求数据,而服务器端也不需要实现太多细节,只需要处理PersistentConnection内部所提供的三个事件:OnConnected(连接时触发,OnDicConnected(断开连接时触发),OnReconnected(重连时触发)即可。(注意:asp.net.core中只有两个事件,没有OnReconnected事件)

    2.Hub:信息交换器,用来解决realtime信息交换的功能,服务器端可以利用URL来注册一个或多个Hub,只要连接到这个Hub,就能与所有的客户端共享发送到服务器上的信息,同时服务器端可以调用客户端的脚本,不过它背后还是不离HTTP的标准,所以它看起来神奇,但它并没有那么神奇,只是JS更强,强到可以用像eval()或是动态解释执行的饭否噶,允许JS能够动态的加载与执行方法调用而已

   SignalR将整个交换信息的行为封装的非常漂亮,客户端和服务器全部都是用JSON来沟通,在服务器端声明的所有Hub信息,都会一般生成JavaScript输出到客户端,.NET则是依赖Proxy来生成代理对象,这点就和WCF/.NET Remoting十分相似,而Proxy的内部则是将JSON转换成对象,以让客户端可以看到对象。

相关文章
|
7月前
|
SQL 存储 JSON
EarthChat SignalR原理讲解
EarthChat SignalR原理讲解
84 3
EarthChat SignalR原理讲解
|
9月前
|
存储 开发框架 .NET
WPF+ASP.NET SignalR实现后台通知
WPF+ASP.NET SignalR实现后台通知
81 0
|
存储 开发框架 JavaScript
『SignalR』.NET使用 SignalR 进行实时通信初体验
📣读完这篇文章里你能收获到 - 你将对SignalR有了初步的认识及体会 - 对于哪些场景适用SignalR以及如何接入使用 - SignalR的代码入门级Demo实际案例
461 0
『SignalR』.NET使用 SignalR 进行实时通信初体验
|
开发框架 .NET 开发工具
SignalR 2.x入门(一):SignalR简单例子
SignalR 2.x入门(一):SignalR简单例子
156 0
SignalR 2.x入门(一):SignalR简单例子
|
开发框架 JavaScript 前端开发
SignalR 2.x入门(二):SignalR在MVC5中的使用
SignalR 2.x入门(二):SignalR在MVC5中的使用
124 0
SignalR 2.x入门(二):SignalR在MVC5中的使用
|
JavaScript 前端开发 .NET
SignalR QuickStart
原文:SignalR QuickStart SignalR 是一个集成的客户端与服务器库,基于浏览器的客户端和基于 ASP.NET 的服务器组件可以借助它来进行双向多步对话。 换句话说,该对话可不受限制地进行单个无状态请求/响应数据交换;它将继续,直到明确关闭。
829 0
|
前端开发 .NET
使用ASP.NET SignalR实现一个简单的聊天室
原文:使用ASP.NET SignalR实现一个简单的聊天室  前言   距离我写上一篇博客已经又过了一年半载了,时间过得很快,一眨眼,就把人变得沧桑了许多。青春是短暂的,知识是无限的。要用短暂的青春,去学无穷无尽的知识,及时当勉励,岁月不待人。
1862 0
|
JavaScript C#
SignalR的简单使用(二)
原文:SignalR的简单使用(二)   之前提到SignalR代理在网页,通过生成的Js来完成相关的功能。但我不禁想一个问题, 难到SignalR的服务端就能寄存在web端吗,通过访问网页能方式才能启动服务,还有客户端 也只能在web端吗?经过看官网的教程得到 了结论,两者的答案都是否定的。
1142 0
|
JavaScript
SignalR简单Demo
  我们实现一个简单的消息通知的Demo    在NuGet中添加SignalR引用 install-package Microsoft.AspNet.SignalR  然后我们创建一个类来引用Hub类 namespace SignalRDemo.
1248 0
|
.NET 开发框架
Asp.Net SignalR - 简单聊天室实现
原文:Asp.Net SignalR - 简单聊天室实现 简单聊天室 使用持久链接类我们就可以做一些即时通讯的应用了,我使用Group做了一个简单的聊天室,先上图技术细节下面再讲 可以加入聊天室、创建聊天室、发送消息,下面就说说我是如何通过Group做出来的 持久链接类有一个Groups的对象,通...
1400 0