HttpReports
简单介绍
HttpReports 是 .Net Core 下的一个 web 组件, 适用于 WebAPI 项目和 API 网关项目, 通过中间件的形式集成到您的项目中, 通过 HttpReports, 可以让开发人员快速的搭建出一个 API 性能分析的基础报表网站.
主要包含 HttpReports 中间件 和 HttpReports.Web 报表项目:
- HttpReports: https://github.com/SpringLeee/HttpReports
- HttpReports.Web: https://github.com/SpringLeee/HttpReportsWeb
如何使用
1. 运行 HttpReports.Web
在 GitHub 下载 HttpReports.Web 项目, 项目地址: https://github.com/SpringLeee/HttpReportsWeb , Web 项目是. Net Core MVC 项目, 使用三层实现.
下载完成后, 在 VS 中打开, 然后还原 NuGet 程序包, 完成后首先 appsettings.JSON
- appsettings.JSON
- {
- "ConnectionStrings": {
- "HttpReports": "Max Pool Size = 512;server=.;uid=sa;pwd=123456;database=HttpReports;"
- },
- "HttpReportsConfig": {
- "DBType": "SqlServer",
- "UserName": "admin",
- "Password": "123456"
- }
- }
主要参数:
HttpReports: 配置一个可用的连接字符串;
DBType: 数据库类型, 支持 SqlServer 和 MySQL;
UserName: Web 项目的登录名;
Password: Web 项目的登录密码;
假设我们使用的是 SqlServer 数据库, 需要先配置 ConnectionStrings, 然后手动创建数据库 HttpReports(Web 项目会根据数据库自动创建表, 并且在第一次运行的时候 Mock 一些数据 ), 我们直接 F5 运行项目, 没有问题的话, 会直接跳到登录页面, 输入用户名密码 admin 123456, 登录后, 应该可以看到下面的页面
现在可以看到项目有 auth,payment,sms 三个服务节点, 服务节点的定义如下:
请求地址 | 服务节点 | 说明 |
---|---|---|
https://www.abc.com/auth/api/user/login | auth | |
https://www.abc.com/log/api/user/login | log | |
https://www.abc.com/api/user/login | default | 如果没有前缀的话,就是 default 节点 |
如果你的项目是单个 WebAPI 项目, 那么服务节点只有一个 default, 如果你的项目是 GateWay 网关项目, 那么 Web 项目就可以读取到多个服务节点, 比如 auth 认证, payment 支付等.
2. 在 API 项目中使用
首先要删除 Web 项目的 Mock 数据, 打开数据库 HttpReports, 打开表 RequestInfo, 清空数据, 执行 Sql
Delete * From [HttpReports].[dbo].[RequestInfo]
配置数据库连接字符串
HttpReports 适用单个 API 项目和网关项目, 这里使用 Ocelot 网关项目为例.
我们打开 appsetting.JSON, 配置数据库连接字符串, 需要和 Web 项目一致
Nuget 引用 HttpReports
安装 nuget 包 HttpReports , 打开 StartUp
在 ConfigureServices 方法下添加:
services.AddHttpReportsMiddlewire();
如果是 MySQL 数据库, 则添加:
csharp services.AddHttpReportsMiddlewire(options =>{ options.DBType = DBType.MySQL; });
加入到 Configure 方法 , 需要放在 App.UseMVC() 或者 App.UseOcelot().Wait() 的前面, 要不然不生效
App.UseHttpReportsMiddlewire();
ConnectionStrings 配置的连接字符串和数据库类型要一致, 全部完成了以后, 我们就可以使用 Web 项目了.
项目环境基本要求
WebAPI 或者网关项目支持的. Net Core 版本 2.2, 3.0, 3.1;
HttpReports.Web 的 core 版本为 2.2
性能事项
HttpReports 中间件是异步操作, 所以对 API 接口请求的时间可以忽略, 但是由于实质使用的是数据库存储, 所以要注意直接请求到数据库的压力.
下面是用 PostMan 做的一个简单测试:
WebAPI 内的方法:
- public string Sql1()
- {
- SqlConnection con = new SqlConnection(
- "Max Pool Size = 512;server=.;uid=sa;pwd=123456;database=HyBasicData;");
- var list1 = con.Query("select * from [HyBasicData].[dbo].[Customers]");
- var list2 = con.Query("select * from [HyBasicData].[dbo].[Customers]");
- var list3 = con.Query("select * from [HyBasicData].[dbo].[Customers]");
- return list1.Count().ToString();
- }
PostMan 分别对添加中间件和不添加中间件的 API 请求 1000 次, 每 300ms 请求一次
说明 | 请求次数 | 平均响应时间 |
---|---|---|
原生 API | 1000 | 32.535 |
使用中间件 | 1000 | 32.899 |
总结
HttpReports 的实现原理并不复杂, 如果你想给你的 WebAPI 项目, 快速的添加一套分析系统 , 那么使用 HttpReports 是一个不错的选择
联系作者
如果您在使用过程中遇到了什么问题或者有好的建议的话, 可以添加我的微信, 希望可以帮助到您
来源: https://www.cnblogs.com/myshowtime/p/12000522.html