net
-
C# 如何使用AutoMapper – 简化对象之间的映射
AutoMapper 是 C# 中简化对象映射的常用库,通过配置 Profile 类定义 CreateMap 规则并注入 IMapper 接口,即可用一行代码完成实体与 DTO 的双向转换,支持忽略、条件映射和集合映射,需注意属性匹配、嵌套映射及空值处理。 AutoMapper 是 C# 中简化对象…
-
C# 如何使用HttpClientFactory – 管理HttpClient生命周期的最佳实践
不能每次都new HttpClient,因其设计为长生命周期对象,频繁创建会致Socket耗尽。正确做法是使用IHttpClientFactory管理实例。推荐使用类型化客户端封装逻辑,配合命名客户端区分服务目标,并集成Polly实现重试熔断。注册AddHttpClient后由DI容器统一管理生命周…
-
C# 如何使用Channel – .NET中高性能的生产者消费者队列
Channel 是 .NET 5+ 推荐的异步生产者-消费者通信原语,相比 Queue 和 BlockingCollection 更轻量、支持无锁操作、内置完成与取消感知,具备有界/无界模式以控制背压,Reader/Writer 可分离实现组件解耦,配合 TryRead 批处理与 WriteAsyn…
-
YARP:一个用.NET构建的可扩展反向代理项目入门
YARP是微软维护的基于.NET的高性能反向代理库,可集成到ASP.NET Core应用中,支持路由、重写、负载均衡和健康检查。相比Nginx等通用代理,YARP优势在于深度融入.NET生态,适合需要定制化代理逻辑的场景,如微服务网关、API聚合、灰度发布和本地开发代理。通过简单配置即可实现请求转发…
-
C# 如何克隆一个Git仓库 – LibGit2Sharp库的使用
使用 LibGit2Sharp 克隆 Git 仓库需调用 Repository.Clone() 方法,支持 HTTPS、SSH 等多种协议;通过 CloneOptions 可配置认证、深度、分支、裸仓库等选项,注意 GitHub 需用 PAT 替代密码。 使用 LibGit2Sharp 克隆 Git…
-
C# 如何实现一个观察者模式 – IObservable和IObserver
C#中观察者模式的官方实现是IObservable和IObserver接口,它们自.NET Framework 4.0起作为Rx基础契约,比手写事件更规范、可组合,并支持取消与错误传播。 <img src="https://img.php.cn/upload/article/001/…
-
C# 单元测试中的Moq框架入门 – 如何模拟依赖项
Moq 是一个轻量开源的 .NET 模拟框架,用于创建接口或抽象类的假实现以隔离依赖、提升测试稳定性与速度;通过 Mock 类 Setup 行为、Verify 调用,配合依赖注入完成单元测试。 什么是Moq,为什么在单元测试中要用它 Moq 是一个轻量、开源的 .NET 模拟(Mocking)框架,…
-
C# 如何使用 Polly 实现弹性策略 – 断路器与重试机制
Polly通过重试与断路器策略组合提升系统弹性:先用指数退避重试应对瞬时故障,再由断路器防止持续失败引发雪崩,配合回调监控和降级机制实现稳定调用。 在分布式系统中,网络不稳定、服务暂时不可用很常见。Polly 是一个强大的 .NET 弹性与瞬态故障处理库,它能帮你优雅地应对这些情况。断路器(Circ…
-
C#如何解析嵌套层级非常深的XML? 递归与迭代的解析策略
解析深层嵌套XML时,递归适合结构灵活但有栈溢出风险;迭代用Stack避免栈溢出,适合深层级;XPath可快速定位特定节点;大文件应使用XmlReader流式处理以控制内存。 当处理嵌套层级非常深的 XML 文档时,C# 提供了多种解析方式。面对深度嵌套结构,选择合适的策略——递归或迭代——直接影响…
-
C# 垃圾回收(GC)机制是如何工作的 – 深入理解.NET内存管理
C#垃圾回收是分代、可干预的内存管理机制,按0/1/2代划分对象生命周期,通过根引用链判定存活,支持低延迟模式、NOGC区域等配置优化。 C# 的垃圾回收(GC)不是“自动清理内存”的黑箱,而是一套有策略、分代、可干预的内存管理机制。 它在后台持续监控对象生命周期,按需回收不可达对象所占堆内存,但它…