• 【Dotnet 工具箱】推荐一个使用 C# 开发的轻量级压测工具


    你好,这里是 Dotnet 工具箱,定期分享 Dotnet 有趣,实用的工具和组件,希望对您有用!

    轻量级压测工具

    LoadTestToolbox 是一个使用 C# 开发的轻量级压测工具,基于 .NET 6 版本, 和其他压测工具相比,LoadTestToolbox 安装和使用都非常简单。

    LoadTestToolbox 提供了一种可靠的方式来模拟高负载情况,来确定系统的瓶颈和性能极限,并且支持以图片输出压测结果。

    如何安装

    直接作为 .NET 全局工具安装,执行以下的命令,需要 .NET 6。

    dotnet tool install --global LoadTestToolbox
    

    非常简单,LoadTestToolbox 压测工具已经安装成功!

    如何使用

    LoadTestToolbox 目前包含了三个工具,分别是 drill (钻头), hammer (锤子), nailgun (钉枪)。

    drill 钻头

    Drill 可以通过在更长的时间内, 以间隔不断的请求,来进行测试应用的长期稳定性。

    比如:

    ltt drill --url https://www.baidu.com/ --rps 100 --duration 10 --filename chart.png
    

    在上面的命令中,LoadTestToolbox 将每秒发出 100 个请求(以一致的 20 毫秒间隔),持续 10 秒,请求到 www.baidu.com。

    完成后,会输出到笛卡尔图的测试结果,并且显示每个请求和对应的响应时间。

    输出结果:

    Hammer 锤子

    Hammer 可以通过指定范围的并发请求,测试接口的性能,并返回每个请求的平均响应时间。

    比如:

    ltt hammer --url http://www.qq.com --min 1 --max 100 --filename chart.png
    

    上面的命令会同时发出 1 个请求,然后是 2 个、3 个,依此类推,最多是 100 个并发请求。

    输出结果

    Nailgun 钉枪

    Nailgun 可以对指定的接口发起瞬间的大量请求,来测试接口性能。

    比如一次性发起 100 个请求:

    ~$ ltt nailgun --url http://www.qq.com/ --requests 100 --filename chart.png
    

    输出结果

    上面就是 LoadTestToolbox 的三个主要工具。

    LoadTestToolbox 还支持各种配置,HTTP 请求方法,请求头,请求体等。

    开源和跨平台 WebAPI 监控工具

    Ketum 是一个跨平台的开源工具,可以让您能够轻松测试和监控网站的运行状况。

    Ketum 提供了简单易读的图表来跟踪您网站的运行状况, 包括显示正常运行时间、响应时间和其他测试结果的图表,另外 Ketum 还支持邮件通知。

    Ketum 的后端使用了 ABP 框架,前端使用了 Blazor,拿来使用或者学习都是不错的。

    截图预览

    image

    监控页面

    监控详情页面

    Terminal.Gui - 适用于 .NET 的跨平台终端 UI 工具包

    Terminal.Gui

    Terminal.Gui 是一个使用 C# 开发的基于控制台的工具库。这个框架的设计目的是, 在单色终端和支持鼠标的现代彩色终端上, 开发人员也可以非常轻松地进行开发并运行程序。

    Terminal.Gui 是跨平台的, 它适用于 Windows、Linux 和 MacOS。

    如何使用?

    在 .NET Core 项目中安装, 可以使用 dotnet CLI 或者 Nuget。

    dotnet add package Terminal.Gui
    

    下面是一个简单的示例:

    using Terminal.Gui;
    
    class Demo
    {
        static int Main()
        {
            Application.Init();
    
            var n = MessageBox.Query(50, 7,
                "Question", "你喜欢这个控制台应用吗?", "Yes", "No");
    
            Application.Shutdown();
            return n;
        }
    }
    

    运行程序后,控制台显示内容如下:

    这个代码进行提示并返回一个整数值,它取决于用户选择的值(Yes,No,或者不选择去按 ESC 键)。

    还可以通过组合所包含的各种视图来创建更有趣的用户界面。

    下面是一个使用用户名和密码进行登录的一个示例。

    // A simple Terminal.Gui example in C# - using C# 9.0 Top-level statements
    
    using Terminal.Gui;
    
    Application.Run ();
    
    System.Console.WriteLine ($"Username: {((ExampleWindow)Application.Top).usernameText.Text}");
    
    // Before the application exits, reset Terminal.Gui for clean shutdown
    Application.Shutdown ();
    
    // Defines a top-level window with border and title
    public class ExampleWindow : Window {
    	public TextField usernameText;
    	
    	public ExampleWindow ()
    	{
    		Title = "Example App (Ctrl+Q to quit)";
    
    		// Create input components and labels
    		var usernameLabel = new Label () { 
    			Text = "Username:" 
    		};
    
    		usernameText = new TextField ("") {
    			// Position text field adjacent to the label
    			X = Pos.Right (usernameLabel) + 1,
    
    			// Fill remaining horizontal space
    			Width = Dim.Fill (),
    		};
    
    		var passwordLabel = new Label () {
    			Text = "Password:",
    			X = Pos.Left (usernameLabel),
    			Y = Pos.Bottom (usernameLabel) + 1
    		};
    
    		var passwordText = new TextField ("") {
    			Secret = true,
    			// align with the text box above
    			X = Pos.Left (usernameText),
    			Y = Pos.Top (passwordLabel),
    			Width = Dim.Fill (),
    		};
    
    		// Create login button
    		var btnLogin = new Button () {
    			Text = "Login",
    			Y = Pos.Bottom(passwordLabel) + 1,
    			// center the login button horizontally
    			X = Pos.Center (),
    			IsDefault = true,
    		};
    
    		// When login button is clicked display a message popup
    		btnLogin.Clicked += () => {
    			if (usernameText.Text == "admin" && passwordText.Text == "password") {
    				MessageBox.Query ("Logging In", "Login Successful", "Ok");
    				Application.RequestStop ();
    			} else {
    				MessageBox.ErrorQuery ("Logging In", "Incorrect username or password", "Ok");
    			}
    		};
    
    		// Add the views to the Window
    		Add (usernameLabel, usernameText, passwordLabel, passwordText, btnLogin);
    	}
    }
    

    运行程序后,输入 admin 和 password,页面显示如下

    应用和扩展

    Terminal.Gui 的社区非常活跃,已经有很多基于它开发的应用。

    Terminal Gui Designer

    TerminalGuiDesigner 使用 CodeDom 和 Roslyn 构建,可让您通过拖放来创建复杂的视图,就像您熟悉和喜爱的 WinForms 设计器一样。

    Dotnet Dump 分析器

    这是一个基于gui.cs 的小型ui,可以和 dotnet dump 一起使用,它能够列出所有受支持的 SOS 命令的输出。

  • 相关阅读:
    Java——数组的使用
    Excel 2021|VBA不可不说的注意事项(第一篇)|VBA精准控制选择范围、VBA提高运行速度并降低运行时的内存消耗
    基于片段的分子生成网络 (FLAG)使用方法及案例测评
    英国伦敦交易所股票清单列表数据API接口
    ssm在线教学质量评价系统毕业设计源码141550
    LeetCode 740.删除并获得点数---->打家劫舍
    【思源笔记】2.5.0 版本之后官方支持的第三方数据同步配置方式
    CodeBERT理解
    iOS之APP上架
    基于SpringCloud微服务的Hdfs分布式大数据实现的企业网盘系统
  • 原文地址:https://www.cnblogs.com/dotnet-box/p/17570865.html