服务启动与宿主接入
本页回答第一次启动一个 AgileLabs 服务时最常见的几个问题:程序入口放哪里、宿主配置放哪里、Json 与 AutoMapper 如何统一,以及服务注册应该放在哪一层。
最短路径
- 用
AgileLabApplication.StartApplicationAsync<TOptions>()作为统一入口。 - 把宿主配置集中在
AppBuildOptions及其派生类,而不是散落在Program.cs。 - 把 Json、AutoMapper、过滤器、应用部件收敛到稳定扩展点中。
- 把服务注册按职责放进
IServiceRegister、IAdvancedServiceRegister或宿主配置方法。
启动职责怎么分层
Program.cs:只负责启动和选择宿主类型。AppBuildOptions:负责功能开关、宿主配置和框架接入选项。IServiceRegister/IAdvancedServiceRegister:负责服务和容器装配。IRequestPiplineRegister/IEndpointConfig:负责运行期中间件和终结点注册。
如果你在接入认证、静态资源、Swagger 或诊断页时不确定“应该写在哪”,不要只盯着宿主页,还要继续看 请求管道与 Endpoint 注册,因为最终行为是由请求管道装配顺序决定的。
启动后的第一条阅读链
- 先确定宿主入口和
AppBuildOptions的职责边界。 - 再确认中间件和终结点落在请求管道的哪个阶段。
- 最后按任务进入
WebAPI、WorkContext、数据访问等具体主题页。
你需要读的页面
真实项目
- niusys-webapi:偏 WebAPI 的标准宿主组织。
- gmandarin-backend:多宿主拆分。
- woscm:在框架入口外再包一层项目标准宿主。