跳至正文
← 全部技术洞察

TECHNICAL INSIGHTS / 技术洞察

公共类库越做越大,为什么 .NET 服务反而不能独立升级?

共享代码能减少重复,但如果业务实体、数据库访问和所有接口模型都塞进同一个公共包,任何修改都可能触发全体服务升级。问题通常不在共享本身,而在共享范围和兼容责任失去边界。

区分稳定工具与业务模型

日期处理、日志接入约定与订单内部状态不是同一类依赖。业务模型跟随业务变化,跨团队共享时更容易引起同步修改。先列出公共包每项内容的使用方、变更频率与所属业务,再决定哪些应该保留。

明确包升级不是强制齐步走

为对外契约约定兼容策略和废弃周期,让使用方可以在合理窗口内升级。不要用共享程序集的版本一致性代替网络接口兼容。独立部署的服务必须面对新旧版本同时存在的现实。

小范围重复有时更容易治理

两个上下文中的相似字段未必具有相同语义。将少量结构分别维护,可能比建立一个巨型继承层次更清晰。判断依据是变化是否同步,而不是代码看起来能否提取成一个基类。

验收一个服务单独升级

选取一次公共包变更,确认旧使用方继续运行,新使用方可以部署,回退时契约仍然成立。交付应包含依赖清单、破坏性变更说明和消费者验证记录,避免只完成包发布。

常见问题:公共包越少越好吗?

不是。应减少不必要的共同变化,而非拒绝复用。成熟稳定的技术能力可以共享,频繁变化的业务规则要有明确所有者。

技术参考:微软:领域分析与微服务边界。具体接口与配置请结合使用版本核对。

将评估落实到你的系统

如果内部团队需要把这些约定落到可运行的工程中,可以通过微服务基础架构建设沟通接口、公共能力与交接范围,先以一个业务场景验证方案。