状态

04-state/00-intro.md
commit - 0adb86ed41d24a167f49240ccb8fb36e27f3e786 - 2021.02.18

Tide 允许我们使用两种状态:服务器(Server)状态,以及请求(Request)状态。

服务器(Server)状态在应用程序启动时实例化,它可以用于维护应用程序状态,并且在所有中间件(Middleware)和端点(Endpoints)中都可用。服务器(Server)状态是保持数据库连接池、应用程序配置、缓存数据,或会话存储的理想位置。服务器(Server)状态被传递给所有中间件(Middleware)和端点(Endpoints),以供其调用。并且,这些调用可能发生在不同的线程上,因此对可以使用的类型有一些限制。调用中的类型限制,通过一些 trait 边界来表示。

Tide 还提供请求(Request)状态。顾名思义,请求(Request)状态对于每个请求(Request)都是唯一的,并且在请求处理后被丢弃。为什么这种类型的状态可能有用?这个问题将在下一章,关于中间件(Middleware)的内容中变得清晰。请求(Request)状态是在请求结构体之上的类型映射(type-map),变量可以存储在请求中,且可以根据其类型检索和取回。

一个请求中,可以存储多个请求(Request)状态,只要它们具有不同的类型。然而,应用程序状态总是一个类型的实例。当然,应用程序状态的类型可以有许多字段,用来存储所需的应用程序状态。