Skip to the content.

MS.Microservice

面向 .NET 10 的可复用组件与教学仓库。通用组件可以独立引用或复制;生产参考服务展示完整接入,Lab 保留本地登录、事件溯源、函数式、文件和其他实验。

入口 用途
总体架构与设计理由 先理解 Core、模块、Reference 和 Lab 各自解决什么问题。
快速启动 一个脚本准备 Reference 或 Lab,并演练消息恢复。
六个递进 Lab 分层、事务、可靠消息、故障、诊断与组件替换。
源码复制与包消费 依赖闭包导出和仓库外接入验证。
生产参考服务 外部 JWT/OIDC 身份、用户档案、业务角色、审计和可靠消息。
可选 Redis 就绪探针 使用现有 Redis 连接执行 PING;未接入 Redis 的宿主无需引用。
消息契约 业务层依赖的入队、工作单元、处理器和运维接口。
默认 Inbox/Outbox 与业务 EF Core 事务共享的自研实现。
RabbitMQ 传输 持久消息、mandatory、publisher confirms、手动 ACK。
Wolverine 替换实现 业务契约不变,使用框架原生存储、事务与恢复。
参考数据库迁移 默认导出 SQL 和校验清单,显式选择应用迁移。
理论与专题资料 DDD、消息、数据库、部署等资料。

按模块独立开发

多项目模块把 docs、src、test 和独立解决方案放在同一目录;小型独立组件暂留根 src/test。 根解决方案覆盖全仓库,日常维护可以只打开对应模块:

模块 独立解决方案 设计入口
AI MS.Microservice.AI.slnx 说明
Logging MS.Microservice.Logging.slnx 说明
Messaging MS.Microservice.Messaging.slnx 说明
Persistence MS.Microservice.Persistence.slnx 说明
Idempotency MS.Microservice.Idempotency.slnx 说明

Reference 是完整接入的参考应用,不是新的底层框架;使用模块不需要引用或启动它。 项目拆分理由和代价见Reference 说明。

构建

SDK 基线为 10.0.401,由 global.json 定义;包版本见 Directory.Packages.props。依赖安全维护见 依赖基线。

dotnet restore --configfile nuget.config
dotnet build --no-restore -c Release

生产参考服务

正式服务不提供账号密码登录或令牌签发。配置外部身份 Authority/Audience,并通过环境变量提供数据库和 Broker 连接信息:

ConnectionStrings__ReferenceDatabase=Host=...;Database=ms_reference_self;Username=...;Password=...
Messaging__RabbitMQ__ConnectionString=amqp://...
Authentication__Authority=https://.../realms/...
Authentication__Audience=ms-reference

默认 Messaging:Provider=SelfManaged;设为 Wolverine 可选择替换实现。两者不能同时接管同一事务。首次使用应先导出、审查并应用对应迁移;Web 不自动执行 DDL。

dotnet run --project samples/Reference/MS.Microservice.Reference.DatabaseMigrator -- --provider SelfManaged --output artifacts/migrations/reference-self
dotnet run --project samples/Reference/MS.Microservice.Reference.Web

/health/live 检查进程,/health/ready 检查迁移、消息存储和 Broker。Broker 中断可降级,数据库或迁移未准备就绪则返回 503。档案管理需要 profiles.manage,消息运维需要 messaging.manage。

Lab

./build/start-local.ps1 -Lab

Lab 与正式 Host 是两个独立程序集。实验 Controller 只在 Lab 中,正式镜像不携带它们。旧 Host 的设置与历史接入资料保存在 历史快照,其中的旧命令不适用于当前生产参考服务。

可选组件

Core、Domain.Primitives、Observability、Swagger、Logging、HTTP Resilience、Idempotency、EFCore、SqlSugar、EventSourcing、Audio、Excel 和 AI 按需接入。具体依赖与平台限制以模块文档为准;参考业务模型不作为通用组件的依赖。

数据库、Broker 和容器故障验证属于集成测试。没有对应环境时不要把跳过这些测试视为生产验证通过;快速的宿主与业务验证使用 TestServer/SQLite。