确保成功实现ASP.NET应用程序可伸缩性的关键因素是什么?

时间:2008-11-18 10:28:04

标签: asp.net architecture scalability

在启动一个新的ASP.NET应用程序时,知道在未来的某个时刻它必须扩展,哪些最重要的设计决策将允许未来的可扩展性而不需要进行重构?

4 个答案:

答案 0 :(得分:3)

我的三大决定是

  1. 禁用或存储会话状态 在数据库中。
  2. 在会话状态下尽可能少地存储。
  3. 良好的N层架构。分离业务逻辑和使用Web服务而不是直接访问DLL确保您可以扩展业务层和表示层。您的数据库很可能能够处理您抛出的任何内容,尽管如果需要,您也可以将其聚集在一起。
  4. 您也可以查看数据库中的分区数据。

    我不得不承认,无论网站是否必须扩展,我都会这样做。

答案 1 :(得分:3)

这些是我们内部的ASP.Net Do's和Do not Do's用于大量访问的Web应用程序:

一般指南

  • 请勿使用会话 - 会话状态=关闭
  • 完全禁用ViewState - EnableViewState = False
  • 不要使用任何完整的ASP.Net UI控件,坚持基本(DataGrid与简单转发器)
  • 使用最快和最短的数据访问 机制(坚持sqlreaders 前台)

应用程序架构

  • 使用抽象层创建缓存管理器。当您开始扩展应用程序时,这将允许您将来使用更复杂的分布式缓存解决方案替换简单的System.Web.Cache。
  • 创建一个带有抽象层的专用I / O管理器,以支持未来的增长(S3是谁?)
  • 将时间跟踪构建到您可以打开和关闭的主管道中,这样可以在发生这种情况时检测瓶颈。
  • 使用后台处理机制并移动任何不需要的内容来呈现当前页面以供其咀嚼。
  • 更好 - 考虑从您的应用程序向其他应用程序触发事件,以便他们可以执行异步工作。
  • 准备数据库可伸缩性,放置自己的层,以便以后决定是否要对数据库进行分区,或者在主从方案中使用多个读取服务器。

最重要的是,向他人学习成功和失败并保持积极态度。

答案 2 :(得分:1)

确保您拥有针对瞬态/静态数据的可靠缓存策略。数据库调用很昂贵,特别是对于单独的物理服务器,所以要对你的缓存采取激进措施。

答案 3 :(得分:1)

有很多考虑因素,人们可以写一本关于这个主题的书。事实上,有一本很棒的书是免费的。 ; - )

Microsoft已发布Improving .NET Application Performance and Scalability作为PDF电子书。

如果你不介意滑稽的写作风格,那么值得阅读封面。它不仅可以识别关键性能方案,还可以确定基准,衡量绩效以及如何应用所学知识。