.NET Core SignalR 和 .NET SignalR 区别
由于要转 .NET Core ,对于以前用到的一些进行迁移。
在迁移 SignalR 的时候发现 .NET Core 下的和 .NET 下的区别还是挺大的。
一、功能差异
自定重新连接
.NET 下的 SignalR 有重连的机制,在客户端断开连接,SignalR 会尝试重新连接到服务器。
.NET Core 下不支持自动重连机制,如果需要重连,需要客户端显示的启动新的连接。
协议支持
.NET Core 不仅支持JSON格式,还支持一种基于 MassagePack 的二进制协议,同时还可以自定义协议。
二、服务器上的差异
SignalR 映射到管道
.NET 下映射
public class Startup
{
public void Configuration(IAppBuilder app)
{
// For more information on how to configure your application, visit https://go.microsoft.com/fwlink/?LinkID=316888
app.UseCors(CorsOptions.AllowAll); var hubConfig = new HubConfiguration() { EnableJavaScriptProxies = false };
app.MapSignalR(hubConfig); // 配置集群底板数据库
RedisConfiguration redisConfig = RedisSectionHandler.GetConfig();
GlobalHost.DependencyResolver.UseRedis(redisConfig.RedisHosts[].Host, redisConfig.RedisHosts[].Port, redisConfig.Password, "signalR_loginHub");
}
}
.NET Core 下的映射和路由
public void ConfigureServices(IServiceCollection services)
{
// 添加到依赖关系注入系统
services.AddSignalR();
} public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
// 添加到中间件管道
app.UseSignalR(routes =>
{
routes.MapHub<ChatHub>("/chatHub");
});
}
集线器的实现
.NET 下方法的实现:客户端的方法直接在 HubConnectionContext 下的对象直接"."出客户端的方法,客户端再注册
public void Send(string msg)
{
// 调用所有客户注册的本地JS方法
Clients.All.ReceiveMessage(msg);
}
.NET Core 下方法实现:客户端的方法是在 HubCallerClients 下的对象调用 “SendAsync”进行方法注册,方法名作为参数进行传入
public async Task SendMessage(string user, string message)
{
await Clients.All.SendAsync("ReceiveMessage", user, message);
}
三、客户端的差异
.NET 下的 SignalR 客户端是依赖 JQuery 用 JS 写的
.NET Core SignalR 客户端是托管于 npm 用 TypeScript ,在使用的时候需要引用的 JS 文件较少
创建连接的不同
.NET 下使用 $.connection
$.connection.hub.url = "http://localhost:10110/signalr"; var chat = $.connection.chatHub;
.NET Core 下使用 HubConnectionBuilder
var connection = new signalR.HubConnectionBuilder().withUrl("/chatHub").build();
以及错误的捕获和处理上
connection.start().catch(function (err) {
return console.error(err.toString());
});
对于客户端方法的注册,.NET Core 和 .NET 下的不使用代理的一致,具体可以看 “SignalR 初体验”
本文章参考微软官方文档:“比较 SignalR 和 SignalR Core”
.NET Core SignalR 和 .NET SignalR 区别的更多相关文章
- 在ASP.NET CORE 2.0使用SignalR技术
一.前言 上次讲SignalR还是在<在ASP.NET Core下使用SignalR技术>文章中提到,ASP.NET Core 1.x.x 版本发布中并没有包含SignalR技术和开发计划 ...
- asp.net core 2.0集成signalr
在博客园也很多年了,一直未曾分享过什么东西,也没有写过博客,但自己也是汲取着博客园的知识成长的: 这两天想着不能这么无私,最近.NET CORE貌似挺流行的,闲来无事也自己搞了个asp.net cor ...
- asp.net core实时库:SignalR(1)
SignalR的基本概念 前言 最近在自己的项目中实践了SignalR的使用,asp.net core 2.1版本的时候建立了对SignalR的支持,SignalR的可使用Web Socket, Se ...
- ASP.NET Core的实时库: SignalR简介及使用
大纲 本系列会分为2-3篇文章. 第一篇介绍了SignalR的预备知识和原理 本文介绍SignalR以及ASP.NET Core里使用SignalR. 本文的内容: 介绍SignalR 在ASP.NE ...
- ASP.NET Core的实时库: SignalR -- 预备知识
大纲 本系列会分为2-3篇文章. 第一篇介绍SignalR的预备知识和原理 然后会介绍SignalR和如何在ASP.NET Core里使用SignalR. 本文的目录如下: 实时Web简述 Long ...
- ASP.NET Core 装X利器SignalR:电子画板
电子画板开发需求 教师端需求: 教师登录后能创建房间(教室) 学生加入房间后有通知提醒 教师能够解散房间 基本的画板功能 学生端需求: 能够切换不同在线的房间 能够收到新建房间的通知 能够收到房间 ...
- ASP.NET CORE 2.0 Uses SignalR Technology
https://www.codeproject.com/Articles/1208322/ASP-NET-CORE-Uses-SignalR-Technology
- 【ASP.NET Core MVC 入门须知】Net Core和Net Framework 的区别
1.简单介绍 从上面图中我们可以看到.net 主要分为三个部分 .net FrameWork,.net Core ,Xamarin XAMARIN 主要用来构建APP的主要用的是C#语言 .NE ...
- 处理器核、Core、处理器、CPU区别&&指令集架构与微架构的区别&&32位与64位指令集架构说明
1.处理器核.Core.处理器.CPU的区别 严格来说"处理器核"和" Core "是指处理器内部最核心的部分,是真正的处理器内核:而"处理器&quo ...
随机推荐
- Terence’s Stuff: Why do we do research?
This sound like a question best answered via a survey conducted by a body such as Vitae, an internat ...
- android基础---->Parcelable的使用
android中Parcelable序列化的使用,简单的记录一下. 目录导航: Serializable在android中的使用 Parcelable在android中的使用 Serializabl ...
- qbittorrent搜索在线插件
https://raw.githubusercontent.com/khensolomon/leyts/master/yts.py https://raw.githubusercontent.com/ ...
- 深入理解Flink核心技术及原理
前言 Apache Flink(下简称Flink)项目是大数据处理领域最近冉冉升起的一颗新星,其不同于其他大数据项目的诸多特性吸引了越来越多人的关注.本文将深入分析Flink的一些关键技术与特性,希望 ...
- [PDF] - 获取 RadioButtonList 控件值的方法
背景 目标是通过 iTextSharp 读取 PDF 模板,填充内容后以生成新 PDF 文件.利用 福昕PDF编辑器个人版 可以获取到 RadioButtonList 的组名,但是获取不到每一个 Ra ...
- java当中JDBC当中请给出一个sql server的helloworld例子
[学习笔记] 1.sql server的helloworld例子: import java.sql.*; public class JdbcHelloSqlServer { public stati ...
- 多线程(11) — NIO
Java NIO是new IO的简称,是一种可以替代Java IO的一套新的IO机制.它提供了一套不同于Java标准IO的操作机制,严格来说,NIO与并发并无直接关系,但是使用NIO技术可以大大提高线 ...
- 多线程(10) — Future模式
Future模式是多线程开发中常用常见的一种设计模式,它的核心思想是异步调用.在调用一个函数方法时候,如果函数执行很慢,我们就要进行等待,但这时我们可能不着急要结果,因此我们可以让被调者立即返回,让它 ...
- QT release版QAudioDeviceInfo获取不到音频设备,而debug版可以获取到
新添加了两个模块:QCharts和Multimedia 但自己没有重新打包更新里面的库文件什么的... 坑爹... 害我找了这么久... 解决办法: 方法一: 将Qt安装目录下的plugins文件夹中 ...
- CSS样式三种形式222
markdown CSS基本表现形式只有三种:标签样式.Class类样式.ID样式 标签样式: 必须与HTML标签同名.仅仅影响同名标签 Class样式:可以在任何标签中使用: class=" ...