asp服务器_Asp.net Core中使用SignalR使用MessagePack中心协议减少网络传输

介绍

现今社会Web应用程序盛行,前后端也出现了各种各样的新技术、新框架,asp.net core也跟随了开源以及跨平台的的步伐,现在也有不少公司项目采用asp.net core作为后台服务,最多的可能是使用它作为客户端应用程序如单页面Web、移动端等的api提供端,而且性能不错。而我们今天主要讲的不是asp.net core而是在asp.net core应用程序中使用SignalR的另一种中心协议的使用MessagePack(一种二进制序列化库)来降低在网络环境不佳的情况下的数据传输,以此达到提高性能的目的!


2df99f9652cafc3795142c21ab186d8f.png

SignalR和MessagePack

SignalR和MessagePack本身并无多大关联,一种是微软在C#中实现实时通信的一种技术,MessagePack是作为一个数据序列化的解决方案,它不仅仅用在C#中,Messagepack包含对Java、JavaScript等各大流行编程语言的支持,只是微软在asp.net core中已经将MessagePack集成到SignalR中,因此将两者关联在一起了。


a284aa1a2823215931722c798f7f8868.png

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值