Bitzsoft.Integrations 把第三方服务集成抽象为统一的三层包模式:抽象层定义契约,厂商实现层各自适配,聚合层提供配置驱动的一键注册。这一约定贯穿全部 14 个功能域,是库最重要的架构约定。
一张图读懂请求路径
Provider 是核心边界。它接收调用,通过 IHttpClientFactory 获取命名 HttpClient,请求经过 RequestLogHandler 做审计脱敏后发往第三方。错误在 Provider 边界被捕获并转换为 Result<T>,成功返回数据。
三个架构支点
三层包分离
绝大多数功能域遵循抽象 / 厂商 / 聚合三层。抽象层不含厂商逻辑,只定义接口和 DTO;厂商层每家一个包,包含 Options、Provider、HttpClient 封装和签名器;聚合层是空程序集,靠配置节存在性驱动注册。
Provider 目录与解析
IntegrationProviderDescriptor 是每个 Provider 的事实源——声明 ID、领域、能力、稳定性、限制。IIntegrationProviderResolver<T> 按稳定 Provider ID 解析,跨 net5/net8/net10 使用同一公共 API。
Result 优于异常
新域对外用 Result<T> 包装(IsSuccess + ErrorCode + ErrorMessage),内部用异常,在 Provider 方法边界捕获并转换。第三方 API 失败是预期分支,不是异常情况。
依赖链
Compatibility(BCL 兼容层) │ Core(目录与解析) │ RequestLogging(审计日志) │ │ ┌───────────┴────┬───────┴──────────┐ ▼ ▼ ▼ 抽象层(Payment) 抽象层(Sms) 抽象层(FileStorage) │ ┌────┼────┬──────────┐ ▼ ▼ ▼ ▼ Alipay WeChatPay Stripe │ │ │ │ └────┴────┴──────────┘ │ Payment.All三个跨域共享的基础设施包:
| 包 | 职责 |
|---|---|
| Compatibility | 多目标 BCL 兼容层,CompatibilityArgument.ThrowIfNull 等 |
| Core | Provider Descriptor / Catalog / Resolver / Context / Credential / Exception |
| RequestLogging | HTTP 请求审计日志,DelegatingHandler 拦截 + 脱敏 + 非阻塞入队 |
哪些域遵循标准三层
| 域 | 抽象 | 厂商数 | 聚合包 | 备注 |
|---|---|---|---|---|
| Payment | ✓ | 3 | ✓ | 当前最规范参照 |
| FileStorage | ✓ | 10 | ✓ | 胖接口(~20 方法) |
| ElectronicSignature | ✓ | 8 | ✓ | 含回调验签 |
| EnterpriseInfo | ✓ | 3 | ✓ | |
| Express | ✓ | 7 | ✓ | 双接口变体 |
| TeamWork | ✓ | 6 | ✓ | 细粒度接口变体 |
| CloudDrive | ✓ | 6 | ✓ | |
| EnterpriseMail | ✓ | 5 | ✓ | |
| LegalDatabase | ✓ | 12 | ✓ | 适配器变体 |
| OutboundCall | ✓ | 7 | ✓ | 含编排引擎变体 |
| Finance | ✓ | — | ✓ | 嵌套域(Invoice/Tax/Payroll) |
| Sms | — | 6 | — | 单体包变体 |
推荐阅读顺序
- 三层包模式:理解每层职责边界。
- 依赖链:查看基础设施如何串联。
- 结构变体:了解不遵循标准三层的域。
- 多目标框架:net5/8/10 的含义与代价。
- Provider 目录与解析:Descriptor → Catalog → Resolver。
- AI 抽象栈:Abstractions → AI → RAG → AgentFramework。
- 01/06
三层包模式
抽象层、厂商实现层和聚合层的职责边界与代码组织约定。
- 02/06
依赖链
Compatibility → Core → RequestLogging → 域抽象 → 厂商实现 → 聚合包的依赖方向与职责。
- 03/06
结构变体
不遵循标准三层包模式的六个域变体——单体 Sms、嵌套 Finance、适配器 LegalDatabase、编排引擎 OutboundCall、细粒度 TeamWork 和双接口 Express。
- 04/06
多目标框架策略
net5.0;net8.0;net10.0 三目标框架的含义、兼容性代价和 Compatibility 包的作用。
- 05/06
Provider 目录与解析
IntegrationProviderDescriptor、Catalog 和 Resolver 构成的跨框架多 Provider 路由体系。
- 06/06
AI 抽象栈
AI.Abstractions → AI → Anthropic → SemanticKernel → RAG → AgentFramework → McpServer 构成的自有 AI 集成抽象栈。