高流量 ASP.NET MVC 编码考虑事项

5

我曾被问到以下问题,感觉自己的回答不够好。因此,在此转述该问题,希望能找到更多有关编写可扩展MVC3 C#代码的资源、博客、书籍或指针。如果您有任何关于编写在多个服务器上托管且性能更佳的代码方面的建议,我将非常感激。就论点而言,假设这是为每天预计达到10-20K次点击的代码。

问题: 在编写分布在多个服务器上的可扩展代码时,你考虑了哪些编码问题?

我的直觉告诉我,答案在于处理会话。过去几年中,我的背景都是编写服务和表单应用程序,而不是Web应用程序,因此我正在寻找可以帮助我进行Web应用程序特定开发(尤其是C# MVC3)的信息。如果您有任何建议的博客或书籍,我一定会仔细研究!


2
个人而言,我总是尽量避免使用会话(session),因为在多台服务器上运行应用程序时,这样可以少一些麻烦。如果您的应用程序中没有使用会话,您也可以在 web.config 中将其关闭,以获得小幅的性能提升! - Lee Gunn
1个回答

2

实现可扩展的Web应用程序的规则之一是使其无状态。会话(Session)是应该首先被排除在外的,因为它正是使应用程序具有状态的原因。如果您有一个完全无状态的应用程序,当流量增加时,您可以抛弃硬件,而应用程序仍能处理它。所以,从在您的web.config文件中添加以下行开始:

<system.web>
    <sessionState mode="Off" />
    ...
</system.web>

问题现在在于数据层,因为这是状态所在的地方。为了提高性能并限制对此节点的请求数量,应使用缓存。尽可能缓存所有数据。最好将此缓存存储在与Web服务器不同的单独计算机上。专用机器用于缓存。

@xanatos - MVC 不使用 ViewState。 - Erik Funkenbusch
这是很好的输入,谢谢您的回复。您能否推荐一些阅读材料,以帮助演示一些缓存技术?最好是C# MVC倾向,如果可能的话,但我会读任何东西!:) 再次感谢。 - likestoski
@likestoski,这是一个输出缓存的介绍:http://www.asp.net/mvc/tutorials/improving-performance-with-output-caching-cs 这个链接是关于部分页面输出缓存的:http://davidhayden.com/blog/dave/archive/2011/01/25/PartialPageOutputCachingASPNETMVC3.aspx 还有一个很好的数据缓存系列文章:http://stevescodingblog.co.uk/tag/memorycache/ - Darin Dimitrov

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接