diff --git a/source/_posts/ASP.NET Core.md b/source/_posts/ASP.NET Core.md index 03938a9..7c7934c 100644 --- a/source/_posts/ASP.NET Core.md +++ b/source/_posts/ASP.NET Core.md @@ -1707,6 +1707,49 @@ Mono/Linux 上运行的 .NET 应用程序在关闭前需要停止 Thread/Timer NLog.LogManager.Shutdown(); // Flush and close down internal threads and timers ``` +# 实时应用 + +## 概述 + +### 什么是 SignalR? + +用于简化向应用添加实时 Web 功能。实时 Web 功能使服务器端代码能够将内容推送到客户端。 + +适合 SignalR 的候选项: + +- 需要从 服务器进行高频率更新的应用。示例包括游戏、社交网络、投票、拍卖、地图和GPS应用。 +- 仪表盘和监视应用。示例包括公司仪表板、即时销售更新或旅行警报。 +- 协作应用。协作应用的示例包括白板应用和团队会议软件。 +- 需要通知的应用。社交网络、电子邮件、聊天、游戏、旅行警报和很多其他应用都需要使用通知。 + +SignalR 提供用于创建服务器到客户端远程过程调用(RPC)的API。RPC 从服务器端 .NET Core 代码调用客户端上的函数。提供多个受支持的平台,其中每个平台都有各自的客户端SDK。因此,RPC 调用所调用的编程语言有所不同。 + +以下是 ASP.NET Core SignalR 的一些功能: + +- 自动处理连接管理 +- 同时向所有连接的客户端发送消息。例如聊天室。 +- 向特定客户端或客户端组发送消息。 +- 对其进行缩放,以处理不断增加的流量。 +- SignalR 中心协议 + +### 传输 + +SignalR 支持以下用于处理实时通信的技术(按正常回退的顺序): + +- WebSockets +- Server-Sent Events +- 长轮询 + +SignalR 自动选择服务器和客户端能力范围内的最佳传输方法。 + +### 中心 + +SignalR 使用中心在客户端和服务器之间进行通信。 + +Hub是一种高级管道,允许客户端盒服务器相互调用方法。SignalR 自动处理跨计算机边界的调度,并允许客户端调用服务器上的方法,反之亦然。可以将强类型参数传递给方法,从而支持模型绑定。SignalR 退供两种内置中心协议:基于 JSON 的文本协议和基于 MessagePack 的二进制协议。与 JSON 相比,MessagePack 通常会创建更小的消息。旧版浏览器必须支持 XHR 级别才能提供 MessagePack 协议支持。 + +中心通过发送包含客户端方法的名称和参数的消息来调用客户端代码。作为方法参数发送的对象使用配置的协议进行反序列化。客户端尝试将名称与客户端代码中的方法匹配。当客户端找到匹配项时,它会调用该方法并将反序列化的参数数据传递给它。 + # 远程过程调用应用 ## 使用 gRPC 服务