公益网站 html 模板,wordpress权限acl,平面设计师和网页设计师哪个好,网站设计公司那个好真没想到大过年还在家里写代码写文章#xff0c;本来还打算自驾半个月没想出现这情况。在这里祝福全国同胞在新的一年里身体健康#xff01;希望阳光天气早日照射在这片土地上#xff0c;给人带来新一年的希望#xff01;NetBenchmark是针对网络服务压测的开源组件#xf… 真没想到大过年还在家里写代码写文章本来还打算自驾半个月没想出现这情况。在这里祝福全国同胞在新的一年里身体健康希望阳光天气早日照射在这片土地上给人带来新一年的希望NetBenchmark是针对网络服务压测的开源组件组件提供TCP,HTTP和Websocket的压力测试基础功能为了更好的符合业务需求组件不提供配置信息源的方式(毕竟这种方式只能作有限制测试),而是由使用者来自己制定相应的逻辑代码来进行具体的业务测试。组件基于netstandard2.0,除了可以在.NET CORE上运行外还可以在.NET FX接下来介绍一下组的使用。引用组件https://www.nuget.org/packages/BeetleX.NetBenchmark/Github: https://github.com/IKende/NetBenchmarkTCP测试组件通过Benchmark.Tcp方法来构建一个TCP测压实例方法如下:public static Runner TcpPacket, Token(string host, int port, int connections,FuncBeetleX.Clients.AwaiterClient, Token, Task handler)where Packet : BeetleX.Clients.IClientPacket, new()where Token : new()方法带两个泛参Packet协议分析器,实现BeetleX.Clients.IClientPacket.Token测试关联对象可以根据业务制定相关对象数据状态属性。参数host主机地址port服务端口connectins并发测试的连接数handler测试方法FuncBeetleX.Clients.AwaiterClient, Token, Task,每次调用的测试逻辑。构建TCP测试实例 class Program{static void Main(string[] args){var data StringPacket.RamdomString(512);var runer Benchmark.TcpStringPacket, Program(192.168.2.19, 9090, 200,async (tcp, token) {tcp.Send(data);await tcp.Receive();});runer.Run();runer.Print();}}以上定义了一个基于StringPacket自定义协议测试它是以字节头大小来描述消息长的字符协议解释器。tcp.Send是向服务器发送一个消息而await tcp.Receive则等待服务器响应。测试结果可以通过runer.Print()方法实时把结果输出控制台信息里包括:正确错误和相关网络并发情况在最下面输出不同延时响应的百分比。HTTP测试组件通过Benchmark.Http方法来构建一个HTTP测压实例方法如下:public static Runner HttpToken(Uri host, int connections, FuncIHttpHandler, Token, Task handler)where Token : new()方法带一个泛参Token测试关联对象可以根据业务制定相关对象数据状态属性。参数host测试的服务地址connections并发测试的连接数handler测试方法FuncIHttpHandler, Token, Task,每次调用的测试逻辑。IHttpHandler提供了一些简单的http调用方法Task Get(string url, Dictionarystring, string queryString null);Task Get(string url, Dictionarystring, string queryString, Dictionarystring, string header null);Task Post(string url, Dictionarystring, string queryString, Dictionarystring, string heaer, Dictionarystring, string data);Task Post(string url, Dictionarystring, string data);Task PostJson(string url, Dictionarystring, string queryString, Dictionarystring, string heaer, object data);Task PostJson(string url,object data);构建HTTP测试实例 class Program{static void Main(string[] args){var runer Benchmark.HttpProgram(new Uri(http://192.168.2.19:5000), 100,async (http, token) {await http.Get(/api/values);await http.PostJson(/api/values, beetlex.io);});runer.Run();runer.Print();}}测试结果websocket测试组件通过Benchmark.Websocketxxx方法来构建一个websocket测压实例,方式有三种分别是DataFrame,Text和Json方法如下:public static Runner WebsocketToken(Uri host, int connections, FuncWSClient, Token, Task handler)where Token : new()
public static Runner WebsocketTextToken(Uri host, int connections, FuncTextClient, Token, Task handler)where Token : new()
public static Runner WebsocketJsonToken(Uri host, int connections, FuncJsonClient, Token, Task handler)where Token : new()构建Websocket测试实例 class Program{static void Main(string[] args){var runer Benchmark.WebsocketJsonProgram(new Uri(ws://192.168.2.19:8080), 100,async (ws, token) {ws.TimeOut 1000 * 5;ws.Send(new { url /json });var result await ws.Receive();});runer.Run();runer.Print();}}测试结果