ASP.NET Core扩展库
亲爱的.Neter们,在我们日复一日的编码过程中是不是会遇到一些让人烦恼的事情:
- 日志配置太过复杂,各种模板、参数也搞不清楚,每次都要去查看日志库的文档,还需要复制粘贴一些重复代码,好无赖
- 当需要类型转换时,使用AutoMapper时感觉配置又复杂,自己写人肉转换代码又冗长,又枯燥,好无聊
- 当调用其他服务时,总是不放心,于是在调用前、调用后总是不断重复地记录请求和应答日志?
- 当其他服务需要令牌时,我们不得不管理令牌的生命周期,而且不同第三方服务令牌的认证、维护过程还不一样,有时调用每一个接口时都要手动传入token,好麻烦
- 作为应用开发的你,你编写的服务和很多其他服务交互,经常因为其他服务的问题影响你的开发进度,同时你的服务由于依赖于其他服务,导致调试测试困难
- 在微服务模式下,需要请求链路跟踪,于是,你又在调用其他服务时,不断第重复传递链路跟踪的请求头
- 作为APIer的你,为了快速查找问题,不得不记录每一个接口的请求和应答内容,于是,你就在控制器里面增加了一堆的日志,你知道这不科学,但时间紧,任务重,就先这样吧
- ......
也许,以上这些问题,都有相应的库或者示例代码来解决,但这实在是太零散了,我们没有精力或不想去做这些,所以结果是常常我们采用了最“笨”的办法。
现在,解决这些问题的综合库来了,它就是Xfrogcn.AspNetCore.Extensions扩展库,它深度融合ASP.NET Core的设计模式,使用方式与ASP.NET Core完全一致。
简介
ASP.NET Core扩展库是针对.NET Core常用功能的扩展,包含日志、Token提供器、并行队列处理、HttpClient扩展、轻量级的DTO类型映射等功能。
源码地址:[GitHub] [Gitee]
包地址:[NuGet]
日志扩展
扩展库中,我们对Serilog日志库进行了简单的封装使其更加容易配置,同时也增强了本地文件日志Sink,使其支持更复杂的日志目录结构。另外,定时日志清理功能可让你无需关心本地日志管理问题。
轻量级实体映射
在分层设计模式中,各层之间的数据通常通过数据传输对象(DTO)来进行数据的传递,而大多数情况下,各层数据的定义结构大同小异,如何在这些定义结构中相互转换,之前我们通过使用AutoMapper库,但AutoMapper功能庞大,在很多场景下,可能我们只需要一些基础功能,那么此时你可以选择扩展库中的轻量级AutoMapper实现。
AspNetCore Http服务端的扩展
针对AspNetCore Http服务端,扩展库提供了以下功能:
- 请求与应答详细日志记录
- EnableBufferingAttribute特性,开启请求的Buffer(可重复读取)
HttpClient扩展
.NET Core扩展库中通过HttpFactory及HttpClient来执行HTTP请求调用,HttpClient扩展在此基础上进行了更多功能的扩展,增加易用性、可测试性。
HttpClient包含以下功能:
- 针对HttpClient的相关扩展方法
- 针对HttpRequestMessage及HttpResponseMessage的扩展方法
- 请求日志记录
- 请求头的自动传递(请求链路跟踪)
- Http请求模拟(用于测试或模拟第三方服务)
- Http受限请求中,可自动获取及管理访问令牌
令牌提供器
令牌提供器用于应用的相关访问令牌的生命周期管理,包含令牌的自动获取、缓存、失效判断、自动重试等,主要由HttpClient扩展使用。当然你也可以单独使用。
并行队列处理
并行队列处理可以将一个大的队列,拆分到多个子队列进行并行处理,以提高处理效率。同时,在每个子队列处理中实现了处理管道,可灵活扩展。

以上介绍即为扩展库所支持的功能,后面会有相关的系列文章进行详细介绍。
ASP.NET Core扩展库的更多相关文章
- ServiceStack.Redis 的 ASP.NET Core 扩展库
给大家安利一款 ServiceStack.Redis 的 ASP.NET Core 扩展库,它是基于 ServiceStack.Redis.Core 开发的. 简单易用,开源免费,使用ASP.NET ...
- Log4net 的 ASP.NET Core 扩展库
给大家安利一款 log4net 的 ASP.NET Core 扩展库,它是基于 log4net 开发的. 简单易用,开源免费,使用ASP.NET Core自身提供的DI容器来实现服务的注册和消费.直接 ...
- ASP.NET Core扩展库之日志
上一篇我们对Xfrogcn.AspNetCore.Extensions扩展库功能进行了简单的介绍,从这一篇文章开始,我将逐步介绍扩展库中的核心功能. 日志作为非业务的通用领域基础功能, ...
- ASP.NET Core扩展库之Http通用扩展
本文将介绍Xfrogcn.AspNetCore.Extensions扩展库对于Http相关的其他功能扩展,这些功能旨在处理一些常见需求, 包括请求缓冲.请求头传递.请求头日志范围.针对HttpClie ...
- ASP.NET Core扩展库之Http请求模拟
如今,完全独立的业务应用几乎不存在,不管是在企业内部微服务之间的调用,还是与外部第三方服务的调用,Http的API交互是常见的场景,这些实际情况给我们的开发带来了比较大的挑战,一是第三方服务可能会牵制 ...
- ASP.NET Core扩展库之实体映射
在分层设计模式中,各层之间的数据通常通过数据传输对象(DTO)来进行数据的传递,而大多数情况下,各层数据的定义结构大同小异,如何在这些定义结构中相互转换,之前我们通过使用AutoMapper库,但Au ...
- ASP.NET MVC扩展库
很多同学都读过这篇文章吧 ASP.NET MVC中你必须知道的13个扩展点,今天给大家介绍一个ASP.NET MVC的扩展库,主要就是针对这些扩展点进行.这个项目的核心是IOC容器,包括Ninject ...
- asp.net core实时库:SignalR(1)
SignalR的基本概念 前言 最近在自己的项目中实践了SignalR的使用,asp.net core 2.1版本的时候建立了对SignalR的支持,SignalR的可使用Web Socket, Se ...
- [ASP.NET Core 3.1]浏览器嗅探解决部分浏览器丢失Cookie问题
今天的干货长驱直入,直奔主题 看了前文的同学们应该都知道,搜狗.360等浏览器在单点登录中反复重定向,最终失败报错. 原因在于,非Chrome80+浏览器不识别Cookie上的SameSite=non ...
随机推荐
- Codeforces Round #531 (Div. 3) C. Doors Breaking and Repairing (博弈)
题意:有\(n\)扇门,你每次可以攻击某个门,使其hp减少\(x\)(\(\le 0\)后就不可修复了),之后警察会修复某个门,使其hp增加\(y\),问你最多可以破坏多少扇门? 题解:首先如果\(x ...
- nyoj-2357
2357: 插塔憋憋乐 时间限制: 1 秒 内存限制: 128 MB提交: 107 解决: 28提交 状态 题目描述 众所不知,LLM是一位红警3大佬,打的非常厉害,但是曾经也是一位萌新,喜欢在家 ...
- codeforces 2C(非原创)
C. Commentator problem time limit per test 1 second memory limit per test 64 megabytes input standar ...
- 深入理解JavaScript中的箭头
箭头函数可以使我们的代码更加简洁,如下: var sum = (a,b) => a+b; JavaScript 充满了我们需要编写在其他地方执行的小函数的情况. 例如: arr.forEach( ...
- js console API All In One
js console API All In One const log = console.log; for(const key in console) { log(`navigator.${key} ...
- css animation & animation-fill-mode
css animation & animation-fill-mode css animation effect https://developer.mozilla.org/en-US/doc ...
- Node.js & 页面截图 & 生成画报
Node.js & 页面截图 & 生成画报 https://zzk.cnblogs.com/my/s/blogpost-p?Keywords=headless solution 使用 ...
- SVG Tutorials
SVG Tutorials W3C https://www.w3.org/TR/SVG11/ https://www.w3.org/TR/SVG2/ https://www.w3.org/TR/svg ...
- NGK公链账本技术浅析
NGK公链账本是一个去中心化加密账本,运行在分布式网络上.分布式账本是区块链技术中最重要的组成部分之一.NGK作为公链资产,在公链中起到桥梁作用,可以促进其他资产(法币.数字资产.股权以及实物资产)交 ...
- 利用Metasploit 打入ThinkPHP内网...
出品|MS08067实验室(www.ms08067.com) 本文作者:dch(Ms08067实验室 SRSP TEAM小组成员) 一.利用Metasploit进行攻击的流程图 Metasploi ...