Skip to content
Bitzsoft.Integrationsbitzsoft.integrations

Concept

依赖链

Compatibility → Core → RequestLogging → 域抽象 → 厂商实现 → 聚合包的依赖方向与职责。

Last updated

三个跨域共享的基础设施包构成依赖链的骨架。所有功能域的抽象层都依赖 Core,所有厂商实现层都依赖 RequestLogging。

Compatibility
BCL 兼容层

Core
Provider 目录与解析

RequestLogging
审计日志

域抽象层
Payment / Sms / FileStorage ...

厂商实现层
Alipay / Tencent / Aliyun ...

聚合层
Payment.All / FileStorage.All ...

Compatibility — BCL 兼容层

Bitzsoft.Integrations.Compatibility

多目标框架(net5/8/10)的 BCL 兼容层。几乎被所有包通过 global using 引入。

// net5.0 走自实现,net8+ 直接委托 BCL
public 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参数校验
CompatibilityHttpContentnet5 缺失的 CT 重载
CompatibilityConvert.ToHexString/ComputeSha256Hash十六进制和哈希
CompatibilityHttpRequestMessage.SuppressRequestAndResponseBodies抑制请求日志体

Core — Provider 目录与解析

Bitzsoft.Integrations.Core

跨 TFM 的 Provider 目录、解析器和集成上下文。不依赖 .NET 8 keyed services,在 net5.0 上完全工作。

核心类型:

类型职责
IntegrationProviderDescriptorProvider 事实源:ID、领域、能力、稳定性、限制
IIntegrationProviderCatalog枚举当前容器中所有已配置 Provider
IIntegrationProviderResolver<T>按稳定 Provider ID 解析能力
IntegrationContext集成上下文:TenantId、Region、Environment、CorrelationId
IntegrationException统一结构化异常基类
IntegrationCredential凭据快照模型

DI 入口:

// ① 注册跨框架 Provider 目录与 resolver
services.AddBitzsoftIntegrationCore();
// ② 注册 Provider 的一个真实能力
services.AddIntegrationProviderCapability<IPaymentProvider, AlipayPaymentProvider>(
AlipayProviderDescriptor.Instance,
serviceProvider => new AlipayPaymentProvider(...));

详见 Provider 目录与解析Core 基础设施手册

RequestLogging — 审计日志

Bitzsoft.Integrations.RequestLogging

全库唯一真正统一的基础设施。所有走 HttpClient 的厂商都通过 .AddRequestLogging() 接入审计。

// 注册 HttpClient 时挂上审计 Handler
services.AddHttpClient(options.HttpClientName).AddRequestLogging(options.HttpClientName);

RequestLogHandler 作为 DelegatingHandler 拦截请求/响应/异常/耗时,做结构化脱敏后非阻塞入队。默认使用 NullRequestLogStore(丢弃日志),宿主提供自己的存储实现。

详见 RequestLogging 基础设施手册

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 不依赖任何域抽象

相关

100%

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