agilelabs-fx-docs main real-usecases/gmandarin-backend.md

gmandarin-backend

gmandarin-backend 是一个多宿主、同时覆盖 WebApi、WebSite、JobHost、ClientApp、多时区和 Hangfire 的综合案例。

适合看什么

  • 同一业务系统如何拆成多个宿主。
  • WebSite 如何托管多个前端入口。
  • IsIntegrateAspNetAuthentication = true 的 API 宿主接法。
  • 项目级 AutoMapper 时间 resolver。
  • 自定义 Hangfire JobActivator 与 WorkContext 生命周期。

关键实践

  • Clearn.WebApi 负责 API,Clearn.WebSite 负责 MVC + ClientApp,Clearn.JobHost 负责 Job。
  • WebSite 通过 AddClientApp 一次注册多个前端入口。
  • WebApi 宿主启用 IsIntegrateAspNetAuthentication = true
  • 项目中存在 CurrentUserTimeResolverUserLocalTimeResolverResloveUTCTimeByGmLocalTimezone 等时间转换器。
  • 自定义 Hangfire JobActivatorBeginScope() 中创建 IServiceScope 并显式附着/释放 WorkContext。
  • WebSite 宿主同时叠加站点级 UseStaticFiles(...)UseClientApp(),说明项目级静态资源策略与框架前端托管能力可以并存。
  • 同一业务系统里既有框架接管认证的 API 宿主,也有项目显式接入 Cookie 和外部登录的站点宿主。
  • 多时区处理通过项目级 AutoMapper resolver 体系落到用户视角时间,而不只停留在 UTC 存储原则。

检查时重点核对

  • 多前端入口是否有清晰的 PublicPathDistPath 和后端保护边界。
  • 用户视角时间是否通过项目级 resolver 统一处理,而不是在页面散落换算。
  • API 宿主和站点宿主是否虽然职责不同,但仍共享统一规则。

推荐搭配阅读

相关页面