横切能力解决的是“每个用例都需要,但不该复制进每个 Handler”的问题。BitzOrcas 把这些能力放在三个位置:HTTP 中间件处理传输上下文,Mediator pipeline 处理用例语义,Infrastructure adapter 处理具体外部系统。
三条执行链
HTTP middleware 代理头 → 公开端口 → 异常 → 本地化 → CorrelationId → CORS / 安全头 → 认证 / 会话守卫 → 租户/代入/语言 → 请求审计 → 授权 → 限流 → QUERY 内容验证 → 缓存 → 超时
Mediator pipeline 日志 → 授权 → 校验 → 前处理 → 幂等 → 风险持久化 → 事务 → 领域事件 → 后处理 → 活动审计
Infrastructure adapters 数据库 / CAP / Redis / 文件存储 / 外部 HTTP / OpenTelemetry边界很实用:中间件不知道聚合,Handler 不知道 Redis 或 CAP,Adapter 不决定某个用户能否执行业务动作。
能力地图
| 能力 | 主要入口 | 开发时关注什么 |
|---|---|---|
| 错误处理 | Result<T>、Problem Details、全局异常处理 | 区分预期业务失败与未预期系统异常 |
| 验证 | IRequestRule<T>、租户验证策略 | 分层放置格式、权限、租户与聚合规则 |
| 数据脱敏 | 脱敏器与字段策略 | 先授权后脱敏,避免日志与导出泄漏 |
| 幂等性 | IIdempotentRequest、IIdempotencyStore | 键作用域、TTL、多实例存储和并发窗口 |
| 可观测性 | ServiceDefaults、OTLP、CorrelationId | trace/log/metric 关联和敏感数据边界 |
| 健康检查 | /health/live、/health/ready | 区分进程存活、配置就绪与真实连通性 |
| 限流 | ASP.NET Core RateLimiter | 分区键、429 契约和反向代理地址 |
| 缓存 | 缓存端口、Redis/Memory adapter | key 命名、租户隔离、失效标签和降级语义 |
| 后台任务 | JobHost、Quartz、Job Executor | 租户作用域、重试、审计和幂等 |
| HTTP 弹性 | HttpClient 与 resilience pipeline | 超时、重试边界和外部请求审计 |
| 实时通信 | Chat realtime adapter | 连接身份、租户边界和背压 |
| 功能开关 | Feature 目录、Store 与授权 evaluator | 声明、状态与执行边界不能混淆 |
| SSE | 当前为 planned capability | 游标、背压、代理、多实例与撤销 |
默认实现不是同一种语义
Core Runtime 为部分端口提供默认实现,但要区分它们的含义:
- Null Publisher 可以表示某个通知能力确实可选;
- Memory Store 适合本地或单实例开发,不代表多实例生产就绪;
- Unavailable Adapter 用失败结果暴露缺失依赖;
- 安全、许可、审计和生产持久化不能用“什么也不做但返回成功”的实现兜底。
判断标准不是“应用能否启动”,而是当前运行模式是否明确。如果是 API Shell,应在 readiness 中说明依赖有意未配置;如果宣称生产模式,必需能力缺失就应阻断就绪或快速失败。
新增横切能力时
- 先确定它属于传输、用例还是 Adapter 语义。
- 写出失败与降级行为,尤其是安全和数据一致性后果。
- 若顺序会改变结果,把顺序留在显式组合根并补测试。
- 端口不泄漏
HttpContext、Redis client、ORM 或消息客户端。 - 给多租户、取消、重试和并发场景补行为测试。
读懂“默认实现”
看到一个接口、Null adapter、Memory store 或 Endpoint 注册,不要直接推导商业能力已经完成。采用时依次回答:组合根实际注入什么、生产门禁是否拒绝降级、失败是 Allow/Deny/Miss/异常中的哪一种、多实例是否共享状态,以及哪个合同测试证明端到端语义。
本章对已发现的关键边界作了显式收缩:幂等 pipeline 尚未使用原子占位;Feature 通用 evaluator 只映射 tickets/chat/workflow;部分限流策略仍是进程内;Chat realtime 不是严格 post-commit 且未配置 scale-out;SSE 尚未交付;HTTP 审计会缓冲正文且网络异常无记录。
推荐阅读路径
实现业务用例时先读错误处理、授权与验证,再根据副作用选择幂等、缓存、后台任务和 HTTP 韧性。准备生产部署时集中复核可观测性、健康检查、限流、数据脱敏与实时传输。每个专题最后的“当前边界”与测试矩阵应进入模块采用清单,而不是只阅读 happy path 示例。
- 01/14
纯函数式入站校验:IRequestRule 与防腐设计
告别低效脆弱的业务异常!深入解析 BitzOrcas.Modern 纯函数式前置校验体系,掌握 IRequestRule 规则声明、ValidationPipelineBehavior 管道拦截与结构化错误码映射。
- 02/14
后台任务
在独立 JobHost 中设计可重试、可审计、可取消的后台任务,并正确处理租户、幂等和失败。
- 03/14
缓存
使用 FusionCache、Redis 与 ICacheStore 构建可降级、可观测的多层缓存,并正确处理键、负缓存、区域目录、预热与失效。
- 04/14
接口幂等去重与快速重放:Idempotency-Key 实践
深入解析 BitzOrcas.Modern 接口幂等性内核,掌握 Idempotency-Key 声明、Redis/DB 双层去重存储、并发请求互斥锁定与历史响应原样重放。
- 05/14
功能开关
使用全局 Feature 定义、租户覆盖、授权求值与缓存失效管理功能发布边界。
- 06/14
领域错误模型与枚举定义:Error 与 Result 规范
告别混乱的未捕获异常!深入解析 BitzOrcas.Modern 领域错误定义哲学,掌握 ErrorType 分类、结构化 Error 工厂与 ErrorCatalog 编译期代码生成。
- 07/14
全链路可观测性与结构化审计:OpenTelemetry 与 Activity
掌握 BitzOrcas.Modern 企业级可观测性底座,深入 OpenTelemetry 分布式链路追踪(Tracing)、指标监控(Metrics)与结构化业务审计日志落盘。
- 08/14
数据脱敏与隐私保护:IDataMasker 与安全合规
掌握 BitzOrcas.Modern 企业级数据脱敏体系,深入手机号、身份证、邮箱与银行卡掩码算法、[Masked] 契约特性与审计日志自动防泄密。
- 09/14
HTTP 韧性
说明当前出站 HTTP 审计边界,以及为具体集成设计超时、重试、熔断和幂等策略的方法。
- 10/14
健康检查
区分 liveness、readiness、配置自洽与真实依赖连通性,并正确接入 Kubernetes 与 Aspire。
- 11/14
全局异常拦截与 RFC 9457 统一错误响应
掌握 BitzOrcas.Modern 企业级错误处理体系,深入 Result 业务流控、GlobalExceptionHandler 兜底拦截与 RFC 9457 Problem Details 标准映射。
- 12/14
多租户与分布式限流:RateLimiter 策略与防刷
掌握 BitzOrcas.Modern 企业级高并发限流体系,深入 ASP.NET Core RateLimiter 算法(滑动窗口/令牌桶)、多租户配额动态隔离与 Redis 分布式防护。
- 13/14
实时通信
当前 Chat SignalR 适配器、持久化事实、成员授权、断线恢复与 Null 组合边界。
- 14/14
Server-Sent Events
SSE 的当前未交付边界、适用场景和未来实现必须满足的协议与运维要求。