初识SignalR

先不说SignalR是什么,我们先说它可以干什么,官方的解释是:

  虽然经常以聊天为例,但您可以做更多的事情。使用SignalR使您的ASP.NET应用程序栩栩如生,每当用户刷新网页以查看新数据,或者该页面实施Ajax长轮询来检索新数据时,它都是使用SignalR的候选对象。SignalR还支持需要从服务器进行高频更新的全新类型的应用程序,例如实时游戏。当今的现代应用程序有望在不按下刷新按钮的情况下提供最新信息。将实时功能添加到仪表板,地图,游戏等。什么是实时功能?可以让服务器端代码实时将内容推送到连接的客户端。

为什么要用SignalR:

  开源、免费、大厂出品、社区也比较活跃。SignalR有这样一些优点:

  开源,开放协议

  与.NET的其余部分一样,SignalR在GitHub上也是开源的。除源代码外,集线器与客户端之间的通信协议规范也已开放。

  SignalR快速且可扩展

  与ASP.NET的其余部分一样,SignalR为实现高性能而构建,并且是周围最快的实时框架之一。

  借助内置支持使用Redis,SQL Server或Azure Service Bus来在每个实例之间协调消息的内置支持,可在服务器之间横向扩展。

  随处连接

  借助用于JavaScript,.NET(C#,F#和Visual Basic)和Java的客户端SDK,您可以连接到SignalR集线器,并开始在几乎任何平台上(包括Web,移动,桌面和游戏)接收实时消息。

  SignalR将在可用时使用WebSockets,并在不可用时优雅地使用其他技术,而您的应用程序代码保持不变。

什么是SignalR?

ASP.NET Core SignalR是一种开放源代码库,可简化将实时 web 功能添加到应用程序的功能。 实时 web 功能使服务器端代码可以立即将内容推送到客户端。

适用于SignalR:

  • 需要从服务器进行高频率更新的应用。 示例包括游戏、社交网络、投票、拍卖、地图和 GPS 应用。
  • 仪表板和监视应用。 示例包括公司仪表板、即时销售更新或旅行警报。
  • 协作应用。 协作应用的示例包括白板应用和团队会议软件。
  • 需要通知的应用。 社交网络、电子邮件、聊天、游戏、旅行警报和很多其他应用都需使用通知。

SignalR提供用于创建服务器到客户端远程过程调用(RPC)的 API。 Rpc 通过服务器端 .NET Core 代码从客户端调用 JavaScript 函数。

下面是的SignalR某些功能 ASP.NET Core:

  • 自动处理连接管理。
  • 将消息同时发送到所有连接的客户端。 例如,聊天室。
  • 向特定客户端或客户端组发送消息。
  • 可缩放以处理不断增加的流量。

传输

  SignalR支持以下用于处理实时通信的技术(按正常回退的顺序):

  • Websocket
  • 服务器发送的事件
  • 长轮询

  SignalR自动选择服务器和客户端功能内的最佳传输方法。

中心

  SignalR使用集线器在客户端和服务器之间进行通信。

  中心是一种高级管道,它允许客户端和服务器分别调用方法。 SignalR自动处理跨计算机边界的调度,使客户端能够在服务器上调用方法,反之亦然。 可以将强类型参数传递给方法,从而启用模型绑定。 SignalR提供了两个内置的集线器协议:基于 JSON 的文本协议和基于MessagePack的二进制协议。 与 JSON 相比,MessagePack 通常会创建较小的消息。 较早的浏览器必须支持XHR 级别 2 ,才能提供 MessagePack 协议支持。

中心通过发送包含客户端方法的名称和参数的消息来调用客户端代码。 作为方法参数发送的对象将使用配置的协议进行反序列化。 客户端尝试将名称与客户端代码中的方法匹配。 当客户端找到匹配项时,它将调用方法并向其传递反序列化的参数数据。

服务器系统要求
  SignalR for ASP.NET Core 支持 ASP.NET Core 支持的任何服务器平台(在Windows,Linux和macOS上受支持)。
JavaScript 客户端
  JavaScript 客户端在 NodeJS 8 及更高版本以及以下浏览器上运行:

浏览者版本
Microsoft Edge 当前†
Mozilla Firefox 当前†
Google Chrome;包括 Android 当前†
免费包括 iOS 当前†
Microsoft Internet Explorer 11


  †当前是指浏览器的最新版本。
.NET 客户端
  .Net 客户端在 ASP.NET Core 支持的任何平台上运行。 例如, xamarin 开发人员可以使用SignalR 使用 xamarin 8.4.0.1 和更高版本以及使用 xamarin 11.14.0.4 和更高版本的 ios 应用来构建 Android 应用程序。
如果服务器运行 IIS,则 Websocket 传输要求在 Windows Server 2012 或更高版本上安装 IIS 8.0 或更高版本。 所有平台都支持其他传输。
Java 客户端
  Java 客户端支持 java 8 及更高版本。
不受支持的客户端
  以下客户端可用,但为试验或非正式客户端。 它们目前不受支持,可能永远不会。

  • C + + 客户端
  • Swift 客户端

 

posted @ 2020-05-12 12:46  静文·辅神  阅读(1147)  评论(0编辑  收藏  举报