跳到主要内容

Platform 工具平台模块

Platform 是模块化单体中的「工具型」子域聚合层。它不承担核心业务,而是把一批彼此独立、却常被业务复用的横切能力聚到一起:待办、短链接、节假日、消息中心,以及热榜、TTS、导航站、加密、IP 查询、服务器监控等。本文讲清这个模块的边界在哪、为什么聚到一起、内部如何划分子域,各子域的用法见下方子页面。

为什么把这类能力聚成一个模块

这些能力的共同点是:不属于任何单一业务域,却哪个业务都可能用到。如果拆成独立微服务,会带来部署、鉴权、事务边界的额外成本,而它们彼此之间几乎不需要跨域事务。把它们作为模块化单体里的一个 IModuleStartup 挂载,本质上是用「进程内模块边界」替代「服务边界」——既能整体关闭,又省去远程调用的复杂度。

边界原则:

  • 可独立数据源:短链接数据量大且与业务库无关,因此使用独立 FreeSql 实例(ShortFlag),与主库物理隔离(见下文关系图)。
  • 可插拔策略:多渠道场景(消息中心)用 IMessageChannelSender 策略模式,飞书/企微/公众号各自实现,新增渠道不改核心逻辑。
  • 可水平扩展子域:热榜聚合用 keyed IDailyHotService 按平台枚举注册多个实现,聚合 Job 遍历所有键即可。

子域划分与业务能力地图

子域承载的业务能力关键服务
节假日中国法定节假日/工作日的同步与本地查询IHolidayService · IHolidayManager
短链接长链转短码、跳转计数、批量创建(独立库分表)IShortUrlService
待办事项个人待办 CRUD、完成态、拖拽排序、到点提醒IToDoService · INotificationScheduler
消息中心飞书/企业微信/公众号等多渠道统一发送与重试IPlatformMessageService · IMessageChannelSender
热榜聚合25+ 平台热搜的统一抓取与落库(DailyHotItemkeyed IDailyHotService · DailyHotJobService
文本转语音MiMo TTS 合成(独立弹性管线,避免慢调用拖垮全局超时)ITTSService · MimoTtsOptions
导航站导航分类与导航项(公开/管理两套)ICateLogService · INavItemService
工具/基础设施加密(国密 SM/AES)、IP 查询、行政区划、本地化、链接历史、服务器监控等各子域独立 Service

每个子域在自己的目录(如 Holiday/ShortUrl/ToDo/Application/Messages/Application/DailyHot/)下维护实体、服务与控制器,互不入侵。

模块关系图

快速开始

Platform 不是通过独立扩展方法注册,而是作为模块化单体中的一个 IModuleStartup 挂载:

  • 宿主的模块清单 E.Modules 字典里存在 "platform" => typeof(PlatformModuleStartup)src/Services/Host/FreeKit.DI/E.cs)。删除该条目即可整体关闭本模块
  • 宿主通过 services.AddModule<PlatformModuleStartup>("module-1", configuration) 完成服务注册。

消费方无需手动调用任何 AddXXX 扩展;只要宿主包含 Platform 模块并引用其程序集,相关控制器与服务即自动可用。各子域服务的注入示例见对应子页面。

配置的业务含义

Platform 的配置不是一堆开关,每节都对应一类外部依赖或资源边界:

配置节业务含义绑定类
HolidayAppOption节假日同步的年份区间api.apihubs.cn 的 API Key——决定了本地缓存覆盖哪几年HolidayAppOption
ShortUrlOption短码盐值 / 最小长度 / 分表数——盐值影响短码不可预测性,分表数决定短链库水平拆分粒度ShortUrlOption
ConnectionStrings:ShortUrlConnectionStrings短链独立库连接串——让高频且体量大的短链流量与业务库隔离AddDefaultFreeSql<ShortFlag>
PlatformMessage消息中心各渠道开关与凭据(飞书/企微/公众号),以及 CmsKit 通知是否外发PlatformMessageOptions
MimoTtsTTS 的 ApiKey / BaseUrl / Model / 超时秒数——单独超时是因为合成慢,避免占用全局 HTTP 超时预算MimoTtsOptions

各子域的详细配置键见对应子页面。

子页面

相关文档