NET9PreViewRC1新增的库

程序员有二十年 2024-09-14 21:16:44
前言

.NET9 RC1如期发布了,这个版本的运行时基本上定型了。需要微调的是托管方向的一些细节问题,比如SDK API最后的增加。

WebSocket新增的一个非常有用的功能。这个新的功能允许 WebSocket 客户端定期发送 Ping 请求,如果服务器未在指定时间内响应时终止连接。这对于保持连接健康以及避免长时间空闲的连接非常有用。

新增的压缩功能,两种新的压缩选项:ZLib 和 Brotli。用于特定算法的压缩级别和压缩策略,提供更精细的控制压缩设置。

WebSocket

代码:

//实例化一个websocketusing var cws = new ClientWebSocket();// 设置每隔 5 秒发送一个 Ping 请求cws.Options.KeepAliveInterval = TimeSpan.FromSeconds(5); // 如果 1 秒内请求的服务端没有响应,则终止连接cws.Options.KeepAliveTimeout = TimeSpan.FromSeconds(1); Uri serverUri = new Uri("https://www.baidu.com"); var cancellationToken = new CancellationToken();// 连接 WebSocket 服务器 await cws.ConnectAsync(serverUri, cancellationToken);

以上就是WebSocket的操作例子,KeepAliveInterval 属性用于设置每隔5秒钟从客户端往服务器发送一个ping请求。KeepAliveTimeout 属性则是检查这个客户端发送的ping请求服务端是否在一定的时间内有响应,这里的时间设置的是1秒。

本例即是客户端每隔5秒钟往服务器端发送一个ping请求,如果ping请求在1秒钟内没有响应的话,就终止这个链接。

压缩

ZLib 和 Brotli,分别添加了用于特定算法的压缩级别和压缩策略的设置。

CompressionLevel设置压缩级别,CompressionStrategy: 设置压缩策略

Zlib代码:

private MemoryStream CompressStream(Stream uncompressedStream){ var compressorOutput = new MemoryStream(); using var compressionStream = new ZLibStream(compressorOutput, new ZLibCompressionOptions() { CompressionLevel = 6, CompressionStrategy = ZLibCompressionStrategy.HuffmanOnly }); uncompressedStream.CopyTo(compressionStream); compressionStream.Flush(); return compressorOutput;}Brotli代码:private MemoryStream CompressStream(Stream uncompressedStream){ var compressorOutput = new MemoryStream(); using var compressionStream = new ZLibStream(compressorOutput, new BrotliCompressionOptions() { CompressionLevel = 6, CompressionStrategy = BrotliCompressionOptions.HuffmanOnly }); uncompressedStream.CopyTo(compressionStream); compressionStream.Flush(); return compressorOutput;}结尾

WebSocket的新增功能和压缩对于级别和策略的控制,这样做的目的:节省内存,简约代码,提高程序效率。.NET9的性能继续持续性上升。

0 阅读:0

程序员有二十年

简介:感谢大家的关注