> ## Documentation Index
> Fetch the complete documentation index at: https://docs.arupa.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# 简介

> 了解服务（Service）的作用。

服务是为 Arupa 应用添加某项功能的可部署单元。它包含该功能特有的代码，而 Arupa 内核提供共享的运行时环境和应用集成。这样内核就可以专注于通用关注点，而服务则专注于自身的业务逻辑。

内核管理服务的生命周期：加载服务包、启动所选的运行时，并将服务声明的传输和路由连接到应用中。服务可以暴露 HTTP 路由、静态资源，以及一个被代理的上游地址。内核会将匹配的请求和事件分派给对应的服务，并强制执行为每条路由声明的访问策略。

## 运行时类型

服务使用三种运行时类型之一，通过其包元数据中的 `Type` 设置：

* `wasm` 和 `grpc` 服务运行由服务提供的代码。它们在启动时会与内核完成一次身份握手，随后在运行期间使用内核 API 来声明和更新它们拥有的传输与路由。
* `static` 服务完全不运行任何代码。它们在包清单中一次性、提前声明好自己的传输和路由，由内核直接提供服务。运行时类型的工作方式及使用场景请参阅 [Static 服务](./static-service)。

## 传输与路由

服务的资源由两个相关的概念描述：

* **传输（transport）** 是服务拥有的一个端点：可以是静态文件来源、HTTP 处理程序，或是一个被代理的上游地址。
* **路由（route）** 将一个 URL 模式绑定到服务的某个传输上，并携带该绑定的访问策略。

将两者分开，使得一个传输可以服务于多条路由，也使服务可以在不重建底层连接的情况下更改其路由。完整的关系说明请参阅[路由与传输](./routing)；具体可用的传输类型（包括将流量转发到服务所拥有的上游地址的 `proxy` 传输）请参阅[传输](./transport)。

## 通信

`wasm` 和 `grpc` 服务实现同一套协议；内核与服务如何通信请参阅[协议](./protocol)。当服务需要共享的应用能力时，例如日志记录、键值存储、配置参数，或与另一个服务的[服务间通信](./isc)，可以使用内核的 Host API。

每个服务都由一份清单描述，其中包含名称、版本、运行时类型、契约版本等元数据，对于 `wasm` 和 `grpc` 服务而言，还包括用于启动它的命令。清单和运行时产物会被打包在一起，以便内核能够将服务作为一个整体发现并加载；包格式请参阅[服务包](./package)。
