使ASP.NET MVC应用程序Web Farm Ready

时间:2010-08-11 21:59:42

标签: asp.net-mvc caching memcached web-farm

使ASP.NET MVC应用程序Web场准备就绪的最有效方法是什么。

最重要的是共享当前用户的信息(上下文)和(不那么重要)缓存对象,例如查找项目(州,街道类型,县等)。

我听说过/读过MemCache但没有看到关于如何实现和测试它的简单适用方式(文档)。

1 个答案:

答案 0 :(得分:21)

请求上下文
命中Web场的任何请求都由可用的IIS服务器提供服务。在那里创建上下文,整个请求由同一服务器提供服务。因此上下文不应成为问题。请求是无状态执行管道,因此它不需要以任何形式或形式与其他服务器共享数据。它将由同一台机器从头到尾提供 用户信息从cookie中读取并由提供请求的服务器处理。这取决于你是否在某处缓存完整的用户对象。

<强>会话
如果您使用TempData字典,您应该知道它存储在Session字典中。在服务器场中,这意味着您应使用除InProc会话之外的其他方法,因为它们不在服务器场中的IIS服务器之间共享。您应该配置使用数据库或其他(状态服务器等)的其他会话管理器。

<强>缓存
当谈到缓存它是一个不同的故事。为了使其尽可能高效,还应提供缓存。默认情况下不是。但是看一下缓存它几乎没有意味着当没有缓存时它应该被读取并存储在缓存中。因此,如果特定服务器场服务器没有某个缓存对象,则会创建它。所有这些都会缓存一些共享的公共使用数据 或者......您可以使用像 memcached 这样的库(正如您所提到的那样)并利用共享缓存。网上有几个例子如何使用它。

但是这些解决方案都带来了一些额外的开销(如网络和第三个进程处理和数据获取等),如果没有别的话。因此默认缓存是最快的,如果您明确需要共享缓存,则决定一个。除非确实有必要,否则不要共享缓存。