介绍
现今社会Web应用程序盛行,前后端也出现了各种各样的新技术、新框架,asp.net core也跟随了开源以及跨平台的的步伐,现在也有不少公司项目采用asp.net core作为后台服务,最多的可能是使用它作为客户端应用程序如单页面Web、移动端等的api提供端,而且性能不错。而我们今天主要讲的不是asp.net core而是在asp.net core应用程序中使用SignalR的另一种中心协议的使用MessagePack(一种二进制序列化库)来降低在网络环境不佳的情况下的数据传输,以此达到提高性能的目的!
SignalR和MessagePack
SignalR和MessagePack本身并无多大关联,一种是微软在C#中实现实时通信的一种技术,MessagePack是作为一个数据序列化的解决方案,它不仅仅用在C#中,Messagepack包含对Java、JavaScript等各大流行编程语言的支持,只是微软在asp.net core中已经将MessagePack集成到SignalR中,因此将两者关联在一起了。
MessagePack是快速和精简的二进制序列化格式。 性能和带宽是一个问题,因为它将创建较小的消息, 因为它是以二进制格式, SignalR 为 MessagePack 格式中,提供内置支持,并提供 Api,可用于要使用的客户端和服务器。
服务器端配置
普通的SignalR已经启用了Json协议,若要启用MessagePack,则需要安装服务器端支持的dll,我们只需要在程序包管理中心安装:
Microsoft.AspNetCore.SignalR.Protocols.MessagePack
然后我们需要在Startup.cs文件中添加对它的调用
services.AddSignalR() .AddMessagePackProtocol();
app.UseSignalR(routes => { routes.MapHub("/chatHub"); });
using Microsoft.AspNetCore.SignalR;using System.Threading.Tasks;namespace SignalRChat.Hubs{ public class ChatHub : Hub { public async Task SendMessage(string user, string message) { await Clients.All.SendAsync("ReceiveMessage