博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SignalR简介
阅读量:5132 次
发布时间:2019-06-13

本文共 1419 字,大约阅读时间需要 4 分钟。

引用:

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

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

  SignalR内部有两类对象:

  · Persistent Connection(HTTP持久链接):持久性连接,用来解决长时间连接的能力,而且还可以由客户端主动向服务器要求数据,而服务器端也不需要实现太多细节,只需要处理 PersistentConnection 内所提供的五个事件:OnConnected, OnReconnected, OnReceived, OnError 和 OnDisconnect 即可。

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

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

  SignalR显示已经可在单台机器上扩展至上万个连接,同时可以通过service bus和redis 以及sql server 实现可扩展的集群部署。

相关博文:

转载于:https://www.cnblogs.com/wangwangfei/p/3863518.html

你可能感兴趣的文章
Hdu5000
查看>>
上传各种尺寸的头像,处理成正圆形的方法:【孟祥阳】
查看>>
dreamweaver 8的替换功能
查看>>
《编写可读代码的艺术》---变量和可读性
查看>>
关于 width;height
查看>>
交换排序
查看>>
查看现有运行的linux服务器有多少内存条
查看>>
有趣的数字图形I
查看>>
Linux 常用命令
查看>>
android开发之路05
查看>>
[leetcode] Triangle
查看>>
jq的each方法之退出循环与继续循环
查看>>
Servlet 浅析
查看>>
自动化通讯协定——现场总线
查看>>
Unity3D DoTween插件 的基本用法
查看>>
php操作excel表格的导入和导出
查看>>
Django signal
查看>>
java+jxls利用excel模版进行导出
查看>>
使用Golang实现的快速排序
查看>>
TestNG安装及配置
查看>>