- 新增 GatewayAggregate 领域实体 (GwTenant, GwTenantRoute, GwServiceInstance) - 新增 IRouteStore, RouteStore, IInstanceStore, InstanceStore - 新增 IRouteManager, RouteManager - 合并 GatewayDbContext 到 PlatformDbContext - 统一 Extensions.AddPlatformCore 注册所有服务
76 lines
2.2 KiB
Markdown
76 lines
2.2 KiB
Markdown
# Phase 1: Gateway Routing Migration - Context
|
|
|
|
**Gathered:** 2026-02-28
|
|
**Status:** Ready for planning
|
|
**Source:** User request (YARP gateway migration)
|
|
|
|
## Phase Boundary
|
|
|
|
Migrate YARP gateway routing entities from fengling-gateway to Platform project:
|
|
- GwTenant - 租户在网关中的配置
|
|
- GwTenantRoute - 路由规则配置
|
|
- GwServiceInstance - 服务实例管理
|
|
|
|
Output: Domain entities, Infrastructure (Store/Manager), Extensions for IoC
|
|
|
|
## Implementation Decisions
|
|
|
|
### Architecture Pattern
|
|
- **Manager + Store 模式**: 与现有 Tenant 管理一致
|
|
- ITenantStore → ITenantRouteStore
|
|
- ITenantManager → ITenantRouteManager
|
|
- 参考: `Fengling.Platform.Infrastructure/TenantStore.cs`, `TenantManager.cs`
|
|
|
|
### Entity Design
|
|
- **GwTenant**: 租户网关配置 (继承现有 Tenant 概念)
|
|
- **GwTenantRoute**: 路由规则 (ClusterId, PathPattern, Priority)
|
|
- **GwServiceInstance**: 服务实例 (Address, Health, Weight)
|
|
|
|
### Extensions Pattern
|
|
- 参考现有: `Fengling.Platform.Infrastructure/Extensions.cs`
|
|
- 新增: `AddGatewayCore<TContext>()` 扩展方法
|
|
- 注册: DbContext, IRouteStore, IRouteManager, IServiceInstanceStore
|
|
|
|
### Database
|
|
- PostgreSQL (已有)
|
|
- 新迁移: Gateway 实体相关表
|
|
|
|
## Specific Ideas
|
|
|
|
### 从 fengling-gateway 迁移的实体
|
|
|
|
```
|
|
../fengling-gateway/src/Models/GwTenant.cs
|
|
../fengling-gateway/src/Models/GwTenantRoute.cs
|
|
../fengling-gateway/src/Models/GwServiceInstance.cs
|
|
../fengling-gateway/src/Data/GatewayDbContext.cs
|
|
```
|
|
|
|
### Manager/Store 接口命名建议
|
|
|
|
```
|
|
ITenantRouteStore / TenantRouteStore
|
|
ITenantRouteManager / TenantRouteManager
|
|
IServiceInstanceStore / ServiceInstanceStore
|
|
IServiceInstanceManager / ServiceInstanceManager
|
|
```
|
|
|
|
### 扩展方法签名
|
|
|
|
```csharp
|
|
public static IServiceCollection AddGatewayCore<TContext>(this IServiceCollection services)
|
|
where TContext : GatewayDbContext;
|
|
```
|
|
|
|
## Deferred Ideas
|
|
|
|
- 服务发现集成 (后续阶段)
|
|
- 动态配置热加载 (后续阶段)
|
|
- 复杂的负载均衡策略 (后续阶段)
|
|
|
|
## Claude's Discretion
|
|
|
|
- 实体命名: 保持 Gw 前缀还是简化? (建议保留以避免冲突)
|
|
- 是否复用现有 TenantStore? (建议新建独立 Store)
|
|
- 是否需要 YARP 集成? (仅实体层,先不包含 YARP 特定配置)
|