Web API和静态类



关于Web API,是否按照每个请求将静态类加载到内存中?如果不是,则应使用每次请求使用相同的静态类并将其加载到内存中?我正在考虑加载包含字典的类。

一个静态类已加载一次,并且在所有实例之间共享静态成员 - 如果您想共享字典,则将其声明为类的静态成员(类本身不会需要静态)。

重要的是要注意的一件事:如果您的应用在IIS下运行,并且您将其配置为允许多个过程实例,那么这些实例将不会共享静态类实例,因为它们处于不同的过程中。这不是默认值 - 如果您使用默认的IIS设置,则只有一个进程将服务请求,您会没事的 - 否则您将需要采用其他方法,例如,二级共享内存中的缓存或服务或数据库然后成为字典的共享存储。

每个应用程序域仅初始化一次静态类型,并且仅在引用时。Web API 4.x和上一个(不是核心版本)托管在IIS中,该网站在每个站点自己的应用程序域1域中托管。

如果您想要一个共享的可读字典,则可以使用静态类型,将其加载一次,您的所有加载实例都可以参考相同的词典,无论其要求如何。我并不是在提倡这个想法,因为这将进入意见领域,我只是说这是可能的。

最新更新