Orisumi

后端运行与本地环境

四个后端项目组成一个进程,Aspire 编排本地环境,NGINX 提供同源入口

背景

后端需要让模型规则独立于 HTTP 和数据库。本地开发需要同时运行 API、文档站、Web 控制台、PostgreSQL 和反向代理,并支持断点调试和热更新。

决定

项目分工

  • Orisumi.Core 负责实体、契约和模型规则。
  • Orisumi.Application 负责实体操作和应用规则。
  • Orisumi.Infrastructure 负责 PostgreSQL 映射、事务和迁移。
  • Orisumi.Api 负责 HTTP 请求校验、响应映射和启动组装。
  • 四个项目组成一个后端进程。
  • Core 和 Application 不依赖 HTTP 或数据库。
  • 迁移由独立的步骤执行。

本地环境

  • Aspire AppHost 是本地资源、依赖关系和启动顺序的唯一来源,只用于本地开发。
  • 需要调试的应用进程在本机运行,PostgreSQL 和 NGINX 在容器中运行。

HTTP 入口

  • NGINX 为 API、文档站和 Web 控制台提供只绑定本机的同源入口。

遥测

  • API 默认输出控制台日志,配置 OTLP 地址后导出遥测。遥测不采集请求体和数据库参数值。

理由

Core 和 Application 不依赖 HTTP 和数据库,模型规则不启动数据库就能测试。目前没有需要独立部署的部分,所以四个项目放在一个进程中。

迁移独立执行,多个 API 实例启动或 API 重启时就不会重复建表。

应用进程在本机运行,可以直接调试和热更新。通过 NGINX 同源访问 API,浏览器端无需配置跨域。遥测默认关闭,API 可以脱离 Aspire 独立运行。

放弃的方案:

  • 按层拆成多个服务。 目前没有需要独立扩展或部署的部分,拆分只增加网络调用。
  • 全部在容器中运行。 断点调试和热更新会变得麻烦。

代价

  • 本地验证只覆盖本地环境。
  • Aspire 不用于部署,部署需要另外的配置。

规则位置

  • 运行说明:src/Backend/Orisumi.Api/README.md、tools/Orisumi.AppHost/README.md
  • 入口和转发:docker/nginx/default.conf;请求体上限和公共代理设置:docker/nginx/common.conf;服务的上游:同目录的 *-enabled.conf 和 *-disabled.conf
  • API · 服务地址
  • Storage · PostgreSQL

贡献者

页面历史