什么是 ASP.NET Core SignalR?

所有连接了 Internet 的应用程序都由服务器和客户端组成。 客户端依赖于服务器获取数据,而它们获取数据的主要机制是通过发出超文本传输协议 (HTTP) 请求来进行的。 某些客户端应用程序需要经常更改的数据。

ASP.NET Core SignalR 提供了一个 API,用于创建服务器到客户端远程过程调用 (RPC)。 RPC 从服务器端 .NET Core 代码中调用客户端上的函数。 支持多个平台,每个平台都有各自的客户端 SDK。 因此,RPC 调用所调用的编程语言有所不同。

这有助于熟悉与 SignalR 关联的常见术语。 在本单元中,你将了解服务器应用程序中所需的 SignalR 组件,而不是客户端应用程序中所需的组件。 此外,你还将了解各种双工通信机制。 SignalR 封装了多个实时协议,并对每个实现的复杂性进行了抽象。 有关详细信息,请参阅 ASP.NET Core SignalR 文档。

以下部分介绍了 SignalR 中使用的主要术语。

传输

SignalR 支持以下方法(或传输)来处理实时通信:

  • WebSockets
  • Server-Sent Events
  • 长轮询

上面列出的传输的顺序表示其正常回退顺序。 也就是说,Websocket 优先于 Server-Sent Events,而 Server-Sent Events 优先于 Long Polling,尽管可以使用其中的任何一种传输。 SignalR 会自动选择服务器和客户端所接受的最佳传输方法。 有关详细信息,请参阅 SignalR 传输协议的正式规范。

服务器

服务器负责公开 SignalR 终结点。 终结点映射到 Hub 或 Hub<T> 子类。 服务器可存在于本地、云提供商(如 Azure)或 Azure SignalR 服务中。 服务器公开可以从客户端调用的中心方法以及客户端可以订阅的事件。 它们被视为远程过程。

集线器

在 SignalR 中,hub 用于在客户端和服务器之间进行通信。 中心是一种高级管道,允许客户端和服务器相互调用方法。 为此,SignalR 会自动跨计算机边界处理调度。 你可以将中心看作是所有连接的客户端和服务器之间的代理。

协议

SignalR 协议是通过任意基于消息的传输实现双向 RPC 的协议。 连接中的任何一方都可以对另一方调用程序,并且程序可以返回零个或多个结果或者返回错误。 SignalR 提供了两个内置的 hub 协议:

  • 基于 JSON 的文本协议,这是默认值。
  • 基于 MessagePack 的二进制协议,与 JSON 相比,MessagePack 通常会创建较小的消息。

若要使用 MessagePack 协议,服务器和客户端都需要选择加入以对其进行配置,并且服务器和客户端都必须支持它。 还有第三个中心协议,名为 BlazorPack,但它仅用于 Blazor-Server 应用程序。 在没有 Blazor-Server 托管模型的情况下,无法使用该协议。 有关详细信息,请参阅 SignalR Hub 协议的官方规范。

用户

系统中的用户是一个个体,但也可以是组的一部分。 可以将消息发送到组,所有组成员都会收到通知。 单个用户可以从多个客户端应用程序进行连接。 例如,同一用户可以使用一个移动设备和一个 Web 浏览器,同时在这两个上获取实时更新。

一个组包含一个或多个连接。 服务器可以创建组,将连接添加到组,以及从组中删除连接。 组具有指定的名称,该名称充当其唯一标识符。 组充当范围界定机制来帮助定位消息。 也就是说,实时功能只能发送给已命名组中的用户。

连接

与中心的连接由唯一标识符表示,该标识符只有服务器和客户端知道。 每个 hub 类型都存在单个连接。 每个客户端都有一个到服务器的唯一连接。 也就是说,单个用户可以在多个客户端上表示,但每个客户端连接都有各自的标识符。

客户端

客户端负责通过 HubConnection 对象建立到服务器终结点的连接。 Hub 连接在每个目标平台中表示:

  • .NET 客户端:Microsoft.AspNetCore.SignalR.Client.HubConnection
  • JavaScript 客户端:@microsoft/signalr.HubConnection
  • Java 客户端:com.microsoft.signalr.HubConnection

有关详细信息,请参阅 ASP.NET Core SignalR 支持的平台。

当中心连接实例成功启动后,消息可以自由地双向流动。 用户可以自由地将通知发送到服务器,以及从服务器接收通知。 客户端是任何已连接的应用程序,例如(但不限于)Web 浏览器、移动应用或桌面应用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/14545.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

(三)4. 深度生成模型-扩散模型(基于扩散的生成模型与分数匹配的变分视角)

“基于扩散的生成模型”与“分数匹配”的变分视角 1. 介绍1.1. 变分自动编码器1.2. 基于扩散的建模1.3. 主要内容2. 基于得分的随机微分方程生成建模基于离散时间扩散的生成模型和分数匹配方法在高维图像数据建模方面显示出了良好的效果。 最近,Song等人(2021)表明,通过学…

(Python):元类(metaclass), Type类,类实例,dataclass

文章目录 类实例类成员变量与成员变量的区别 Type类MetaclassABCMeta dataclass 类实例 在python中&#xff0c;所有的类都是一个实例&#xff0c;也就是说&#xff0c;所有的类其实都是由自己的属性和方法的。 这里就需要区分清楚一件事&#xff0c;类实例和对象。类实例指的…

使用vim-cmd工具给ESXi虚机定期打快照

VMware虚拟化 - 建设篇 第四章 使用vim-cmd工具给ESXi虚机定期打快照 VMware虚拟化 - 建设篇系列文章回顾使用vim-cmd工具给ESXi虚机定期打快照前言前提条件ESXi新增执行快照备份的sh脚本ESXi添加crond任务并使其生效ESXi指定部分虚拟机不执行定期快照(附加)虚拟机自定义属性…

ChatGPT有几个版本,哪个版本最强,如何选择适合自己的?

​ChatGPT就像内容生产界的瑞士军刀。它可以是数学导师、治疗师、职业顾问、编程助手&#xff0c;甚至是旅行指南。只要你知道如何让它做你想做的事&#xff0c;ChatGPT几乎可以提供你要的任何东西。 但重要的是&#xff0c;你知道哪个版本的ChatGPT最能满足你的需求吗&#x…

Windows 11 下 OpenFace 2.2.0 的安装

写在前面 最近需要做关于面部的东西&#xff0c;所以需要使用到OpenFace这个工具&#xff0c;本文仅用来记录本人安装过程以供后续复现&#xff0c;如果可以帮助到读者也是非常荣幸。 安装过程 不编译直接使用 这种方法可以直接从官方下载下来编译好的exe以及gui进行使用&a…

在 “小小容器” WasmEdge 里运行小小羊驼 llama 2

昨天&#xff0c;特斯拉前 AI 总监、OpenAI 联合创始人 Andrej Karpathy 开源了 llama2.c 。 只用 500 行纯 C 语言就能训练和推理 llama 2 模型的框架&#xff0c;没有任何繁杂的 python 依赖。这个项目一推出就受到大家的追捧&#xff0c;24 小时内 GitHub 收获 4000 颗星&am…

Codeforces Round 889 (Div. 2) (C1~C2)

掉大分&#xff0c;C1被sb错误困扰。 提示如果C1会了但不会C2,也应该先将C1解法看一遍 C1 Dual (Easy Version) 题意 给定长度为 n n n 的数组 a a a&#xff0c;&#xff08; n < 20 &#xff0c; − 20 < a i < 20 n<20&#xff0c;-20<a_i<20 n&l…

KY222 打印日期+KY111日期差值

一、KY222题目 二、代码 #include <climits> #include <iostream> using namespace std; class Date{public:Date(int year 1,int month 2,int day 3){_year year;_month month;_day day;}int GetDay(int year ,int month);void Define(int n);public:int _yea…

查看进程方式

目录 ps top uptime pstree ps 查看静态的进程统计信息 top 实时显示系统中各个进程的资源占用情况 第一行 top - 17:00:23 up 15 min, 1 user, load average: 1.05, 1.22, 0.98 17:00:23————当前时间 up 15 min————系统运行时间 1 user————当前登录用户数…

陪诊小程序软件|陪诊系统定制|医院陪诊小程序

开发一个陪诊小程序需要投入一定的费用&#xff0c;具体金额会因项目的复杂程度、功能需求和推广政策而有所差异在投入资金之前&#xff0c;建议进行市场调研和需求分析&#xff0c;制定出合理的预算&#xff0c;并选择专业的开发团队进行合作&#xff0c;那么开发陪诊小程序需…

django模板继承和组件了解

1、模板继承 什么时候需要用到模板呢&#xff0c;比如我们在开发的页面的导航栏&#xff0c;你点不同的功能页面这个导航栏都是一样的&#xff0c;如果每个页面都要加上这个导航条会写重复代码&#xff0c;而且如果导航条有变化&#xff0c;每个页面都要修改&#xff0c;这个是…

linux虚拟机开机后桌面显示CentOS-7.5-x86盘片文件,并且无法远程连接虚拟机?

在虚拟机启动后遇到了显示CentOS-7.5-x86光盘片文件的问题&#xff0c;并且无法远程连接到虚拟机&#xff0c;有几个可能的解决方法&#xff1a; 检查虚拟机设置&#xff1a;确保虚拟机的网络适配器已正确配置&#xff0c;并且虚拟机配置的网络选项是桥接模式或 NAT 模式&#…

2023大同首届信息技术产业峰会举行,共话数字经济新未来

7月28日&#xff0c;“聚势而强共领信创”2023大同首届信息技术产业峰会圆满举行。本次峰会由中共大同市委、大同市人民政府主办&#xff0c;中国高科技产业化研究会国际交流合作中心、山西省信创协会协办&#xff0c;中共大同市云冈区委、大同市云冈区人民政府、诚迈科技&…

密码学的一些常识

1&#xff0c;对称密码、公钥密码、消息认证、数字签名的对比 对称密码公钥密码发送者共享秘钥加密公钥加密接收者共享秘钥解密私钥解密秘钥配送问题存在不存在&#xff0c;但需要CA认证公钥机密性√√ 消息认证数字签名发送者共享秘钥计算MAC使用私钥对文本HASH值做签名接收者…

在Spring Boot中打印SQL语句的方法

系列文章目录 文章目录 系列文章目录前言一、使用Spring Boot的配置选项打印SQL语句二、 使用Logback配置打印SQL语句三、 使用Druid数据源打印SQL语句四、 使用Log4j2打印SQL语句五、 使用@EventListener监听SQL语句总结前言 在Spring Boot项目中,调试和优化数据库操作是很常…

微积分物理题(原创)

在一个粗糙的平面上&#xff0c;有一个质量为 1 kg 1\text{kg} 1kg的小木块&#xff0c;小木块的初速度为 0 0 0&#xff0c;小木块与平面的动摩擦因数 μ 0.2 \mu0.2 μ0.2。有一个拉力 F F F拉动小木块从左往右移动&#xff0c;拉力 F F F与时间 t t t的关系为 F 0.3 t 2 −…

ES6 新特性(详细复习笔记)--下

文章目录 ES6 新特性(详细复习笔记)-下对象相关新特性1. 需求: 演示声明对象简写2-需求: 演示对象方法简写3-应用实例-对象拓展运算符 注意事项和使用细节箭头函数基本介绍应用实例 1-箭头函数使用应用实例 2-箭头函数使用应用实例 3-箭头函数对象解构 注意事项和使用细节综合代…

打卡力扣题目五

#左耳听风 ARST 打卡活动重启# 目录 一、问题 二、解题方法一 三、解题方法二 四、两种方法的区别 关于 ARTS 的释义 —— 每周完成一个 ARTS&#xff1a; ● Algorithm: 每周至少做一个 LeetCode 的算法题 ● Review: 阅读并点评至少一篇英文技术文章 ● Tips: 学习至少一个…

Jgit 工具类 (代码检出、删除分支(本地、远程)、新建分支、切换分支、代码提交)

https://blog.csdn.net/qq_37203082/article/details/120327084 Jgit 工具类 (代码检出、删除分支&#xff08;本地、远程&#xff09;、新建分支、切换分支、代码提交)_jgit删除远程分支_CJ点的博客-CSDN博客 <!--JAVA操作GIT--><dependency><groupId>org.…

JavaScript学习 -- SM3算法基本原理

SM3算法是一种由国家密码管理局发布的哈希算法&#xff0c;被广泛用于数字签名和消息认证等应用中。在JavaScript中&#xff0c;我们可以使用第三方库来计算数据的SM3哈希值。本篇文章将介绍SM3算法的基本原理和相关技术&#xff0c;并提供一些实例来演示如何在JavaScript中使用…