MCP网关的设计
参考
领域驱动设计DDD在B端营销系统的实践 - 美团技术团队 (meituan.com)
领域驱动设计在互联网业务开发中的实践 - 美团技术团队 (meituan.com)
战略设计实践
将业务映射为概念模型,采用DDD的方法论
确定用例
使用用例图表达业务是怎么玩的,表达用户与系统的交互
统一语言
抽取概念
明确概念,统一语言
去伪存真,抽象合并
明确含义
厘清关系(生成概念模型)
划分边界
整体上下文关系
核心业务逻辑
战术设计实践
将概念模型映射为代码模型,采用面向对象范式
┌─────────────────────────────────────────────────────────────────┐
│ 表现层 (Presentation Layer) │
│ ┌───────────────┐ ┌───────────────┐ ┌─────────────────────┐ │
│ │ McpController │ │SubscriptionCtrl│ │ GatewayController │ │ # 对外API接口
│ └───────────────┘ └───────────────┘ └─────────────────────┘ │
│ ┌───────────────┐ ┌───────────────┐ ┌─────────────────────┐ │
│ │ProtocolConvCtrl│ │ DTO 转换器 │ │ 请求参数校验器 │ │ # 协议转换接口/辅助组件
│ └───────────────┘ └───────────────┘ └─────────────────────┘ │
│ ┌───────────────┐ ┌───────────────┐ ┌─────────────────────┐ │
│ │ 全局异常处理 │ │ 接口文档生成 │ │ 限流拦截器 │ │ # 横切辅助组件
│ └───────────────┘ └───────────────┘ └─────────────────────┘ │
└───────────────────────────────┬─────────────────────────────────┘
│
┌───────────────────────────────▼─────────────────────────────────┐
│ 应用层 (Application Layer) │
│ ┌───────────────┐ ┌───────────────┐ ┌─────────────────────┐ │
│ │ McpAppService │ │SubscriptionSvc│ │ GatewayAppService │ │ # 子域用例编排
│ └───────────────┘ └───────────────┘ └─────────────────────┘ │
│ ┌───────────────┐ ┌───────────────┐ ┌─────────────────────┐ │
│ │ProtocolConvSvc│ │ 事务管理器 │ │ 操作日志记录器 │ │ # 协议转换服务/横切关注点
│ └───────────────┘ └───────────────┘ └─────────────────────┘ │
│ ┌───────────────┐ ┌───────────────┐ ┌─────────────────────┐ │
│ │ 权限校验器 │ │ 分布式锁 │ │ 配置加载器 │ │ # 通用服务组件
│ └───────────────┘ └───────────────┘ └─────────────────────┘ │
└───────────────────────────────┬─────────────────────────────────┘
│
┌───────────────────────────────▼─────────────────────────────────┐
│ 领域层 (Domain Layer) │
│ ┌─────────────────────────────────────────────────────────────┐│
│ │ 实体 (Entity) ││
│ │ ┌─────────┐ ┌───────────┐ ┌─────────┐ ┌───────────────┐ ││
│ │ │ Mcp │ │Subscription│ │Invocation│ │ AuthPolicy │ ││ # 核心业务实体
│ │ └─────────┘ └───────────┘ └─────────┘ └───────────────┘ ││
│ │ ┌─────────┐ ││
│ │ │ProtocolDef│ ┌───────────┐ ┌─────────┐ ┌───────────────┐ ││ # 协议转换实体
│ │ └─────────┘ │ConvRule │ │PayloadMap│ │ │ ││
│ │ └───────────┘ └─────────┘ └───────────────┘ ││
│ └─────────────────────────────────────────────────────────────┘│
│ ┌─────────────────────────────────────────────────────────────┐│
│ │ 值对象 (Value Object) ││
│ │ ┌─────────┐ ┌───────────┐ ┌─────────┐ ┌───────────────┐ ││
│ │ │McpUrl │ │SubMode │ │AuthType │ │ Credentials │ ││ # 基础值对象
│ │ └─────────┘ └───────────┘ └─────────┘ └───────────────┘ ││
│ │ ┌─────────┐ ┌───────────┐ ┌─────────┐ ┌───────────────┐ ││ # 协议转换值对象
│ │ │ProtocolType│ │PayloadType│ │ConvStatus│ │ RuleId │ ││
│ │ └─────────┘ └───────────┘ └─────────┘ └───────────────┘ ││
│ └─────────────────────────────────────────────────────────────┘│
│ ┌─────────────────────────────────────────────────────────────┐│
│ │ 领域服务 (Domain Service) ││
│ │ ┌─────────────────┐ ┌────────────────┐ ┌──────────────┐ ││ # 核心领域服务
│ │ │ AuthenticationSvc │ │ GatewaySvc │ │ DeploySvc │ ││
│ │ └─────────────────┘ └────────────────┘ └──────────────┘ ││
│ │ ┌─────────────────┐ ┌────────────────┐ ┌──────────────┐ ││ # 协议转换领域服务
│ │ │ProtocolConvSvc │ │ RuleManager │ │PayloadTransSvc│ ││
│ │ └─────────────────┘ └────────────────┘ └──────────────┘ ││
│ └─────────────────────────────────────────────────────────────┘│
│ ┌─────────────────────────────────────────────────────────────┐│
│ │ 仓储接口 (Repository Interface) ││
│ │ ┌─────────┐ ┌───────────┐ ┌─────────┐ ┌───────────────┐ ││ # 基础仓储接口
│ │ │McpRepo │ │SubRepo │ │InvocRepo│ │AuthPolicyRepo │ ││
│ │ └─────────┘ └───────────┘ └─────────┘ └───────────────┘ ││
│ │ ┌─────────┐ ┌───────────┐ ┌─────────┐ ┌───────────────┐ ││ # 协议转换仓储接口
│ │ │ProtocolRepo│ │ConvRuleRepo│ │PayloadMapRepo│ │ │ ││
│ │ └─────────┘ └───────────┘ └─────────┘ └───────────────┘ ││
│ └─────────────────────────────────────────────────────────────┘│
└───────────────────────────────┬─────────────────────────────────┘
│
┌───────────────────────────────▼─────────────────────────────────┐
│ 基础设施层 (Infrastructure Layer) │
│ ┌─────────────────────────────────────────────────────────────┐│
│ │ 仓储实现 (Repository Impl) ││
│ │ ┌─────────┐ ┌───────────┐ ┌─────────┐ ┌───────────────┐ ││ # 基础仓储实现
│ │ │McpRepoImpl│ │SubRepoImpl│ │InvocRepoImpl│AuthPolicyRepoImpl││
│ │ └─────────┘ └───────────┘ └─────────┘ └───────────────┘ ││
│ │ ┌─────────┐ ┌───────────┐ ┌─────────┐ ┌───────────────┐ ││ # 协议转换仓储实现
│ │ │ProtocolRepoImpl│ConvRuleRepoImpl│PayloadMapRepoImpl│ │ ││
│ │ └─────────┘ └───────────┘ └─────────┘ └───────────────┘ ││
│ └─────────────────────────────────────────────────────────────┘│
│ ┌────────────────────────