夫天地者,万物之逆旅;光阴者,百代之过客。而浮生若梦,为欢几何?
ASP.NET Core 装X利器SignalR:学前必读

如何识别 SignalR 版本

SignalR技术在 ASP.NET Core 和 ASP.NET下有不同的实现,二者之间是存在差异的。所以在学习之前你应该搞懂他们之间的差异性,这有助你选择合适的框架。

本文知识来源 ASP.NET Core官方文档:https://docs.microsoft.com/zh-cn/aspnet/core/signalr/version-differences?view=aspnetcore-2.2



ASP.NET SignalRASP.NET Core SignalR
服务器 NuGet 包Microsoft.AspNet.SignalRMicrosoft.AspNetCore.App (.NET Core) Microsoft.AspNetCore.SignalR (.NET Framework)
客户端 NuGet 包Microsoft.AspNet.SignalR.Client Microsoft.AspNet.SignalR.JSMicrosoft.AspNetCore.SignalR.Client
客户端 npm 包signalr@aspnet/signalr
服务器应用类型ASP.NET (System.Web) 或 OWIN 自承载ASP.NET Core
受支持的服务器平台.NET framework 4.5 或更高版本.NET Framework 4.6.1 或更高版本 .NET core 2.1 或更高版本

服务端的差异

1、删除 PersistentConnection

了解ASP.NET SignalR的笔友都知道,在此版本中存在PersistentConnection(持久连接)和 Hubs(集线器),PersistentConnection 处于较底层,定义了众多socket操作api。但是在.NET Core 中,微软已经移除了该实现,保留了抽象度更高的Hubs。

2、GlobalHost

在ASP.NET MVC和Web Api 中如果想集成SignalR,我们会使用如下代码获取:

GlobalHost.ConnectionManager.GetHubContext<T>();

但是在.NET Core 中需要使用DI访问HubContext。

3、删除HubState

类似下面这种通过客户端定义变量,服务端可以直接使用的方式,在.NET Core 中已不被支持。

// 客户端代码(Javascript)
hubProxy.state.UserName="mike"
hubProxy.state.MsgId=1;

hubProxy.server.alert("");
// 服务端代码
public Task Alert(string msg)
{
   Console.WriteLine("UserName:"+ Clients.Caller.UserName);
   Console.WriteLine("MsgId:"+ Clients.Caller.MsgId);
}


客户端上的差异

1、Javascript客户端的获取方式

在以前的版本中,JavaScript 客户端是通过 Visual Studio 中的 NuGet 包获取的。 Core 版本的 @aspnet/signalr npm 包包含 JavaScript 库。 此包不包括在ASP.NET Core Web 应用程序模板。 使用 npm 获取并安装 @aspnet/signalr npm 包。  

2、已删除对JQuery的依赖


3、客户端语法的不同

JavaScript 语法已与 Signalr 早期版本中的相应语法不同。 请使用 HubConnectionBuilder API 而非 $connection 对象创建连接。

4、中心代理

已经不再自动生成代理

作者:暗夜余晖

本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

0

支持

0

反对

posted @2019-1-5  拜读(1051)

评论列表

评论内容:



喜欢请打赏

支付宝 微信

请放心支付