用途
该技能聚焦 .NET 微服务架构的常见模式,围绕服务拆分、服务间通信、CQRS、Saga、韧性(Resilience)等主题提供代码示例与实践参考,适合在 .NET 项目中设计或实现微服务架构时查阅。
主要能力
服务拆分(Service Decomposition) 按业务能力拆分,示例给出电商平台的划分:Catalog(产品、分类、搜索)、Order(订单、订单处理)、Payment(支付、退款)、Inventory(库存管理)、Notification(邮件、短信、推送)、Identity(认证、用户)以及 Gateway(API 网关、BFF)。同时强调“每服务独立数据库”(Database Per Service),各服务拥有自己的数据存储,不共享数据库,示例中包含 Catalog 使用 PostgreSQL、Order 使用 SQL Server、Notification 使用 Cosmos DB 的配置代码。
通信模式(Communication Patterns) 分为同步(HTTP/gRPC)与异步(消息/事件)两类。同步用于需要立即响应的查询,内部服务间通信可用 gRPC 以提升性能,外部 API 与 BFF 使用 REST;异步用于可稍后处理的命令,通过事件驱动实现服务间松耦合,消息代理可选 RabbitMQ 或 Azure Service Bus。
CQRS 模式 给出命令侧与查询侧的分离示例:命令侧通过 CreateOrderCommand 与 CreateOrderHandler 写入并发布 OrderCreatedEvent;查询侧使用独立只读上下文(IReadOnlyDbContext)与独立读模型,示例中查询使用 AsNoTracking。
Saga 模式(编排型) 以 MassTransit 状态机为示例,定义 OrderSaga,通过 OrderCreated、PaymentProcessed、InventoryReserved 等事件,经 AwaitingPayment、AwaitingInventory、Completed、Failed 等状态,依次发布 ProcessPaymentCommand、ReserveInventoryCommand、FulfillOrderCommand、CancelOrderCommand 等命令,实现跨服务的流程编排与补偿。
韧性模式(Resilience Patterns) 结合 Microsoft.Extensions.Resilience 与 Polly v8,示例展示通过 AddStandardResilienceHandler 获得重试、熔断与超时能力,也展示自定义管线,包括指数退避重试(MaxRetryAttempts=3)、熔断器(FailureRatio=0.5、MinimumThroughput=10)与 5 秒超时。
健康检查(Health Checks) 示例注册数据库(AddNpgSql)、缓存(AddRedis)、消息(AddRabbitMQ)以及自定义检查,并映射 /health/ready 与 /health/live 端点。
API 网关与直连通信对比 给出三种模式的适用场景与取舍:客户端直连服务(少量服务、内部应用,简单但客户端与服务耦合);API 网关(YARP/Ocelot,多服务、外部客户端,单一入口但增加延迟);BFF(多种客户端类型如 Web、移动端,客户端定制 API 但网关更多)。示例包含 YARP 反向代理配置。
数据主权与异步消息 强调每个服务拥有自己的数据,跨服务数据通过 API 调用(实时查询)、集成事件(最终一致性)、物化视图(读密集的跨服务查询)解决。集成事件示例包含 IntegrationEvent 基类与 OrderSubmittedIntegrationEvent,并通过 Outbox 模式(OutboxPublisher)可靠发布待发事件。
复合 UI(Blazor 微前端) 可选的组合方式包括:服务端组合、客户端组合(从不同程序集加载 Blazor 组件)、API 组合(BFF 聚合数据后由单一 Blazor 应用渲染),示例展示主 Blazor 应用组合 CatalogProductList、OrderStatusWidget、CartSummary 等由不同团队拥有的组件。
微服务安全 示例包含在 API 网关进行 JWT 校验(Authority 指向 identity-service,指定 Audience)以及使用 Azure Key Vault 存放密钥。
使用方式
该技能以代码示例与模式说明的形式组织,可直接查阅对应主题的 C# 代码片段作为实现参考。文档还列出官方参考链接,包括架构模式、API 网关模式、数据主权、异步消息通信、韧性应用、熔断器模式、微服务安全、Key Vault 密钥、复合 UI 等 Microsoft Learn 文档,以及 DDD 的实践指南链接。安装命令、具体调用方式与许可信息暂未提供。
适用场景
适用于在 .NET 技术栈下进行微服务架构设计的场景,包括服务边界划分、通信方式选择、CQRS 读写分离、跨服务流程编排与补偿、服务韧性建设、健康检查、网关与 BFF 选型、跨服务数据一致性、微前端 UI 组合以及认证与密钥管理等。
限制
资料未说明该技能的运行环境要求、所支持的 .NET 版本、依赖库版本范围、收费与授权方式,也未提供效果验证或性能数据,暂未提供。相关内容需结合官方文档与实际项目环境核实。