ASP.Net - 创建一个表现良好的Web应用程序?

时间:2011-09-21 02:15:56

标签: .net asp.net performance

我需要创建一个处理大量数据的ASP.Net应用程序,性能非常重要。

  • 使用GridView,RepeatControl,SQLDataSource等ASP.Net控件是个好主意吗?这些元素的设计是否表现良好,或者使用预制和易于使用的元素会失去性能?

  • 哪一种是处理数据的正确方法?创建业务层并使用业务对象填充表单?或直接使用DataTable和DataSet?

  • 请给我一些有助于提升表现的技巧?

2 个答案:

答案 0 :(得分:5)

我要提出的最大的建议是首先使用良好的编程实践构建应用程序,然后使用分析器查看应用程序中花费最多时间的内容。如果你开始尝试尽可能快地完成所有事情,那么你将把所有时间浪费在那些并不重要的事情上。另一方面,如果您开始使代码可维护并遵循SOLID原则,您会发现只需更改几段代码就可以轻松实现显着改进。

在性能方面定义目标是非常重要的。页面加载到什么程度“足够快?”努力实现您的性能目标,但是不要过度考虑减少用户每月只执行一次操作10毫秒的时间。

那就是说,你会发现最大的浪费时间是:

  1. 您和用户之间的往返。
  2. 在您和用户之间发送大量数据。
  3. 您和数据库之间的往返。
  4. 从数据库中检索大量数据。
  5. 以下是一些优化上述项目的一般提示:

    1. 使用MVC。这样可以更轻松地在浏览器和服务器之间来回传递最少量的数据。
    2. 使用不显眼的javascript技术,这样您就不必在每个页面上浪费字节,并使用重复的脚本。将您的javascript放入一个可以最小化和缓存的静态.js文件中。
    3. 使用CSS文件设置页面样式。将其设置为最小化并缓存。
    4. 对于图标,请使用jquery-ui之类的实用程序,以便只下载一个图像文件。
    5. 设置服务器以使用正确的缓存和gzip技术。
    6. 使用一种架构,可以让您轻松缓存经常需要的数据。
    7. 明智地访问数据。尝试尽可能少地往返加载给定请求所需的所有内容,并避免从数据库中加载您不需要的数据。
    8. 我基本同意fdfrye在答案中列出的所有内容。
    9. 要考虑的最后一个小问题是,下一版本的Entity Framework将自动缓存已编译的查询,这将使大多数查询显着加快,而无需您做任何额外的工作。

答案 1 :(得分:3)

就性能而言,最好的办法是使用ASP.NET MVC来避免ViewState生成的页面大小开销。

就其本身而言,MVC不会使你的应用程序具有高性能,但它肯定会比ASP.NET WebForms在挤出最后几毫秒的延迟时提供更多的灵活性。

对于数据交互,您可以使用任意数量的网格控件等(jqGrid,mvcContribGrid,Microsoft MVC Grid ...)但它们在性能方面基本相同。

绝对从您的控制器层创建一个单独的业务层(再次,如果使用MVC)。根据您的风格,您可以在业务层或模型类本身中包含验证。

尽管实体框架是当前MVC应用程序中数据访问的最佳选择,但您应该从“批处理”的角度注意。在批量更新/删除时,EF仍然不是很好。

批量插入应该具有合理的性能,但与XML Bulk Load相比仍然没有。

如果有必要,使用EF,但将其与参数化查询的手动执行结合起来,参数化查询仍然可以使用相同的ObjectContext执行(而不是连接所有普通的ADO.NET东西)......