【问题标题】:Make an ASP.NET MVC application Web Farm Ready使 ASP.NET MVC 应用程序 Web Farm Ready
【发布时间】:2011-03-28 15:38:02
【问题描述】:

准备好 ASP.NET MVC 应用程序 web-farm 的最有效方法是什么。

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

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

【问题讨论】:

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


    【解决方案1】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2010-09-21
      • 1970-01-01
      • 1970-01-01
      • 2011-03-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-20
      相关资源
      最近更新 更多