三个跨域共享的基础设施包构成依赖链的骨架。所有功能域的抽象层都依赖 Core,所有厂商实现层都依赖 RequestLogging。
Compatibility — BCL 兼容层
包:Bitzsoft.Integrations.Compatibility
多目标框架(net5/8/10)的 BCL 兼容层。几乎被所有包通过 global using 引入。
// net5.0 走自实现,net8+ 直接委托 BCLpublic static class CompatibilityArgument{ public static void ThrowIfNull(object? argument, [CallerArgumentExpression(nameof(argument))] string? paramName = null) {#if NET5_0 if (argument is null) throw new ArgumentNullException(paramName);#else ArgumentNullException.ThrowIfNull(argument, paramName);#endif }}关键成员:
| 成员 | 用途 |
|---|---|
CompatibilityArgument.ThrowIfNull/NullOrEmpty/NullOrWhiteSpace | 参数校验 |
CompatibilityHttpContent | net5 缺失的 CT 重载 |
CompatibilityConvert.ToHexString/ComputeSha256Hash | 十六进制和哈希 |
CompatibilityHttpRequestMessage.SuppressRequestAndResponseBodies | 抑制请求日志体 |
Core — Provider 目录与解析
包:Bitzsoft.Integrations.Core
跨 TFM 的 Provider 目录、解析器和集成上下文。不依赖 .NET 8 keyed services,在 net5.0 上完全工作。
核心类型:
| 类型 | 职责 |
|---|---|
IntegrationProviderDescriptor | Provider 事实源:ID、领域、能力、稳定性、限制 |
IIntegrationProviderCatalog | 枚举当前容器中所有已配置 Provider |
IIntegrationProviderResolver<T> | 按稳定 Provider ID 解析能力 |
IntegrationContext | 集成上下文:TenantId、Region、Environment、CorrelationId |
IntegrationException | 统一结构化异常基类 |
IntegrationCredential | 凭据快照模型 |
DI 入口:
// ① 注册跨框架 Provider 目录与 resolverservices.AddBitzsoftIntegrationCore();
// ② 注册 Provider 的一个真实能力services.AddIntegrationProviderCapability<IPaymentProvider, AlipayPaymentProvider>( AlipayProviderDescriptor.Instance, serviceProvider => new AlipayPaymentProvider(...));详见 Provider 目录与解析 和 Core 基础设施手册。
RequestLogging — 审计日志
包:Bitzsoft.Integrations.RequestLogging
全库唯一真正统一的基础设施。所有走 HttpClient 的厂商都通过 .AddRequestLogging() 接入审计。
// 注册 HttpClient 时挂上审计 Handlerservices.AddHttpClient(options.HttpClientName).AddRequestLogging(options.HttpClientName);RequestLogHandler 作为 DelegatingHandler 拦截请求/响应/异常/耗时,做结构化脱敏后非阻塞入队。默认使用 NullRequestLogStore(丢弃日志),宿主提供自己的存储实现。
Rest — 通用传输
包:Bitzsoft.Integrations.Rest
通用多租户 REST/Webhook 传输层。提供 RestClient、端点解析、OAuth 令牌提供器、HMAC 签名、分页器。被 Jira Cloud 等需要复杂 OAuth 流程的域使用。
Webhooks — Webhook 基础设施
包:Bitzsoft.Integrations.Webhooks
HMAC 验证、收件箱(至少一次投递)、重试策略、死信队列、网关。被 Rest 和 Jira Cloud 消费。
依赖方向规则
依赖只能向下流动:
聚合包 → 厂商实现 → 域抽象 → Core → Compatibility ↓ RequestLogging → Compatibility- 厂商包之间不互相依赖
- 域抽象之间不互相依赖(除非显式适配,如 LegalDatabase 委托 SsoRedirect)
- Core 不依赖任何域抽象