目录 / encore-service
encore-service
规划如何将 Encore.ts 应用程序拆分为服务并设计其目录结构。关注架构与分解,而非首次 CLI 安装(相关内容见 `encore-getting-started`)。 --- ### 1. 服务拆分原则 在 Encore.ts 中,服务(Service)是逻辑上独立的功能模块,通常围绕业务能力或领域边界进行划分。拆分时应遵循以下原则: - **单一职责**:每个服务应专注于一个核心业务功能。 - **松耦合**:服务之间通过定义良好的 API 通信,避免直接依赖内部实现。 - **高内聚**:相关功能应集中在同一服务内。 - **可扩展性**:服务应能独立部署和扩展。 常见的服务拆分维度包括: - 用户管理(Auth/User Service) - 订单处理(Order Service) - 支付处理(Payment Service) - 通知系统(Notification Service) - 内容管理(CMS Service) --- ### 2. 目录结构设计 Encore.ts 推荐使用基于服务的模块化目录结构。以下是一个典型的多服务应用目录布局: ``` my-encore-app/ ├── app.ts # 应用入口,定义全局配置、中间件等 ├── services/ # 所有服务目录 │ ├── auth/ # 用户认证服务 │ │ ├── auth.ts # 服务定义与 API 端点 │ │ ├── user.ts # 用户相关逻辑 │ │ ├── middleware.ts # 认证中间件 │ │ └── db.ts # 数据库模型与操作 │ ├── orders/ # 订单服务 │ │ ├── orders.ts # 订单 API │ │ ├── order_logic.ts # 业务逻辑 │ │ └── db.ts │ ├── payments/ # 支付服务 │ │ ├── payments.ts │ │ └── stripe_client.ts # 第三方支付集成 │ └── notifications/ # 通知服务 │ ├── notifications.ts │ └── email.ts ├── jobs/ # 定时任务或后台作业 │ ├── cleanup.ts │ └── report_generator.ts ├── topics/ # 事件主题(Pub/Sub) │ ├── order_events.ts │ └── user_events.ts ├── scripts/ # 数据库迁移、初始化脚本等 │ └── migrate.ts ├── tests/ # 集成测试与端到端测试 │ ├── auth.test.ts │ └── orders.test.ts ├── encore.app # Encore 应用元数据文件 ├── go.mod # Go 模块文件(若使用 Go 服务) ├── package.json # Node.js 依赖(若使用 TS/JS 服务) └── README.md ``` --- ### 3. 服务间通信 - **同步调用**:使用 Encore 的 `api` 调用机制,通过服务名和方法名直接调用。 ```ts import { api } from "encore.dev/api"; const paymentResult = await api.payments.ProcessPayment({ ... }); ``` - **异步通信**:通过定义 `topic` 和 `subscription` 实现事件驱动架构。 ```ts // topics/order_events.ts import { Topic } from "encore.dev/pubsub"; export const OrderPlaced = new Topic...
这是模型对公开材料的总结,不是官方声明,请以原链内容为准。
存档时间线
| 版本 | 存档时间 | 内容哈希 | 内容 |
|---|---|---|---|
| v1 | 2026-11-06 17:30 | e3dddd94 | 可取 |
版本索引永久保留;内容副本只保留最新 1 份,更早版本仅留索引与哈希(存档时间线的证据链不会因此断裂)。
提交举报 / 纠错
侵权举报经核验成立后,我们会即时下线该条目并删除已存的内容副本。