首页 > 编程 > .NET > 正文

通过改善架构来提高 ASP.Net 应用程序的性能

2024-07-10 13:10:47
字体:
来源:转载
供稿:网友
  • 网站运营seo文章大全
  • 提供全面的站长运营经验及seo技术!
  •    有的时候我们的 web 应用程序在本机测试的时候,速度很快,可放在局域网上测试的时候,却会发现存在性能问题;甚至有时在局域网速度正常的应用,在广域网上还会发现问题。这些问题一般都是应用中的疏忽或错误,并不涉及到系统架构,通过真实环境的调试和测试都能找到问题所在并解决。
        今天我们所要说的是通过改善架构来从根本上提高 asp.net 应用程序的性能。
        我们先来对 asp.net 的几个简单的应用做一下测试。
        测试环境:athlonxp 3200+,ddr400 512m,windowsxp sp2,本机的sql server 2000,中文 northwind 数据库(从access导入)的产品表,约70条记录。

    测试序号程序类型测试方法测试结果
    (每秒请求数)
    sqlserver
    所占用资源
    asp.net
    所占用资源
    1web服务用产品表填充dataset,并返回记录数250次100%-
    2web服务用产品表填充dataset,并返回 dataset138次54%46%
    3web应用程序用产品表填充dataset,并绑定 datagrid70次28%72%
    说明:不同系统的测试结果可能不同,但测试结果的相对比例应该差别不大。

        在第一个测试里,web 服务只是从数据库读取记录填充到 dataset,并返回记录数(注意不是返回记录),所占用的系统资源很少,假设系统资源完全被sqlserver 占用,并且对结论不会有负面影响。
        在第二个测试中,web 服务将 dataset 返回,每秒请求数就降低了几乎一半, 这一半的系统资源,被asp.net 用于将 dataset 序列化。
        在第三个测试中,web 应用程序将 dataset 绑定到 datagrid,并返回页面,每秒请求数几乎降低了四分之三,这些系统资源被 asp.net 用于将 dataset 绑定到 datagrid,并将页面序列化。

        从以上测试中我们可以看到,datagrid 的绑定和序列化会占用大量的系统资源,如果要提高系统性能,需要通过改善架构来实现。

        一、将对数据库的操作,从页面中分离出来,放到独立的持久层。

        这样在客户端通过 dom 或 xslt 将数据展现为表格,来代替服务器端 datagrid 的绑定工作,大大减轻了服务器的压力。并且客户端通过 ajax 从持久层获取数据,会提高用户的使用体验。

        二、将页面从数据中彻底独立出来,以便利用缓存。

        有的应用了 ajax 的页面还是会读取初始数据,这样的话页面就不能缓存。这些页面一般比较复杂,会比普通页面占有更多的资源,如果能够利用缓存,将进一步提高系统的性能。

        通过以上两点,asp.net 的性能,几乎能够提高一倍。

        您可以自己作一下测试,或者访问我们的示例 www.bizstruct.cn

    发表评论 共有条评论
    用户名: 密码:
    验证码: 匿名发表