Skip to content
bitzorcas
中EN

Concept

横切能力概述

理解 BitzOrcas 如何在 HTTP 中间件、Mediator 管线和生产适配器之间分配横切职责。

Last updated

横切能力解决的是“每个用例都需要,但不该复制进每个 Handler”的问题。BitzOrcas 把这些能力放在三个位置:HTTP 中间件处理传输上下文,Mediator pipeline 处理用例语义,Infrastructure adapter 处理具体外部系统。

三条执行链

HTTP middleware
代理头 → 公开端口 → 异常 → 本地化 → CorrelationId → CORS / 安全头
→ 认证 / 会话守卫 → 租户/代入/语言 → 请求审计 → 授权
→ 限流 → QUERY 内容验证 → 缓存 → 超时
Mediator pipeline
日志 → 授权 → 校验 → 前处理 → 幂等 → 风险持久化
→ 事务 → 领域事件 → 后处理 → 活动审计
Infrastructure adapters
数据库 / CAP / Redis / 文件存储 / 外部 HTTP / OpenTelemetry
Correlation / Tenant / CallerResult / Cancellation

HTTP middleware:传输上下文

Mediator:用例语义

Infrastructure:外部系统

持久事实与副作用

边界很实用:中间件不知道聚合,Handler 不知道 Redis 或 CAP,Adapter 不决定某个用户能否执行业务动作。

能力地图

能力主要入口开发时关注什么
错误处理Result<T>、Problem Details、全局异常处理区分预期业务失败与未预期系统异常
验证IRequestRule<T>、租户验证策略分层放置格式、权限、租户与聚合规则
数据脱敏脱敏器与字段策略先授权后脱敏,避免日志与导出泄漏
幂等性IIdempotentRequest、IIdempotencyStore键作用域、TTL、多实例存储和并发窗口
可观测性ServiceDefaults、OTLP、CorrelationIdtrace/log/metric 关联和敏感数据边界
健康检查/health/live、/health/ready区分进程存活、配置就绪与真实连通性
限流ASP.NET Core RateLimiter分区键、429 契约和反向代理地址
缓存缓存端口、Redis/Memory adapterkey 命名、租户隔离、失效标签和降级语义
后台任务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 中说明依赖有意未配置;如果宣称生产模式,必需能力缺失就应阻断就绪或快速失败。

新增横切能力时

  1. 先确定它属于传输、用例还是 Adapter 语义。
  2. 写出失败与降级行为,尤其是安全和数据一致性后果。
  3. 若顺序会改变结果,把顺序留在显式组合根并补测试。
  4. 端口不泄漏 HttpContext、Redis client、ORM 或消息客户端。
  5. 给多租户、取消、重试和并发场景补行为测试。

读懂“默认实现”

看到一个接口、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 示例。

100%

滚轮或按钮缩放 · 放大后拖动画面 · 双击切换 100% / 200%