Skip to content
bitzorcas
中EN

Concept

Profiles 多租户定制与元包发行机制

深入解析 BitzOrcas.Modern 中 Profiles 元包架构:基于 Default.Business、Mini.Api、Portal 的场景化依赖聚合与商业按需交付。

Last updated

Profiles 多租户定制与元包发行机制 (Profile-Driven Compilation & Metapackages)

在大型企业级商业软件交付中,常常面临复杂的“客户版本矩阵”挑战:

  • 微型初创团队:只需要最轻量的核心 API(Mini.Api),不需要沉重的复杂工作流与大数据报表;
  • 大型政企私有化:需要包含工作流审批、审计分表、私有 S3 对象存储与全套业务模块的完整商务包(Default.Business);
  • 集团型多前台门户:需要作为统一 API 网关与聚合入口(Portal)。

如果为每一种交付场景单独维护一套 Git 分支或散落数百个独立的 NuGet 包依赖声明,工程维护将迅速陷入灾难。BitzOrcas.Modern 在 src/Profiles/ 目录下引入了 “Profile 元包聚合(Metapackage Profiles)” 机制,完美解决了依赖组合的原子化管理。


1. Profiles 物理结构与定位

在仓库物理结构中,src/Profiles/ 位于顶级架构分层:

客户业务系统工程 (Client App)src/Platform/ 36 个原子平台包src/Profiles/ 元包聚合层聚合引用聚合引用聚合引用聚合引用仅聚合核心仅聚合核心单一行 PackageReference

BitzOrcas.Profile.Default.Business
(标准商业版元包)

BitzOrcas.Profile.Mini.Api
(精简微型 API 元包)

BitzOrcas.Profile.Portal
(门户网关元包)

Identity.Contracts

Workflow.Engine

Reporting.Projections

AuditLogging

MyApp.csproj


2. 元包 MSBuild 声明契约

元包本身不包含任何 C# 源码文件,它的唯一职责是声明版本、许可与子依赖包的闭包集合。以 BitzOrcas.Profile.Default.Business.csproj 为例:

<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net10.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<!-- 元包标记:只作为包依赖聚合器发布,不输出本地 dll 二进制 -->
<IsPackable>true</IsPackable>
<PackageId>BitzOrcas.Profile.Default.Business</PackageId>
<Title>BitzOrcas Profile — Default Business</Title>
<Description>BitzOrcas 租户中性业务系统 Profile,聚合 ORM 中性 Framework、Workflow 与 fail-closed Licensing Runtime;具体 ORM adapter 由 Consumer selector 直接引用。</Description>
<PackageLicenseFile>LICENSE.txt</PackageLicenseFile>
<Version>1.0.0-alpha1</Version>
<PackageVersion>1.0.0-alpha1</PackageVersion>
<PackAsTool>false</PackAsTool>
<IncludeBuildOutput>false</IncludeBuildOutput>
<NoWarn>$(NoWarn);NU5128</NoWarn>
</PropertyGroup>
<!-- 由工程治理脚本自动生成的统一包版本清单 -->
<Import Project="..\Generated\BitzOrcas.Profile.Default.Business.g.props" />
<ItemGroup>
<None Include="..\..\..\LICENSE.txt" Pack="true" PackagePath="\" />
</ItemGroup>
</Project>

关键属性解析

  1. <IncludeBuildOutput>false</IncludeBuildOutput>:防止生成空的 BitzOrcas.Profile.Default.Business.dll,生成的 .nupkg 仅包含 nuspec 元数据文件与依赖图;
  2. <Import Project="..\Generated\*.g.props" />:依赖闭包由工程目录工具从仓库依赖分析自动生成,杜绝手动修改 nuspec 遗漏依赖版本;
  3. <NoWarn>$(NoWarn);NU5128</NoWarn>:抑制 NuGet 关于空程序集的警告。

3. 客户消费端的一键接入体验

对于基于 BitzOrcas 开发的客户业务工程(如 src/Modules/Litigation),其 csproj 文件无需繁琐地声明数十个平台包,只需一行即可引入全套商业运行环境:

<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net10.0</TargetFramework>
<Nullable>enable</Nullable>
</PropertyGroup>
<ItemGroup>
<!-- 一行引入 Default.Business 场景元包,自动获得 Identity、Workflow、Audit 等全部核心能力 -->
<PackageReference Include="BitzOrcas.Profile.Default.Business" Version="1.0.0-alpha1" />
<!-- 显式选择本工程偏好的持久化引擎适配器(SqlSugar 或 EF Core) -->
<PackageReference Include="BitzOrcas.Infrastructure.SqlSugar" Version="1.0.0-alpha1" />
</ItemGroup>
</Project>

100%

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