通过改善架构来提高 ASP.Net 应用程序的性能
有的时候我们的 Web 应用程序在本机测试的时候,速度很快,可放在局域网上测试的时候,却会发现存在性能问题;甚至有时在局域网速度正常的应用,在广域网上还会发现问题。这些 问题一般都是应用中的疏忽或错误,并不涉及到系统架构,通过真实环境的调试和测试都能找到问题所在并解决。
今天我们所要说的是通过改善架构来从根本上提高 ASP.Net 应用程序的性能。
我们先来对 ASP.Net 的几个简单的应用做一下测试。
测试环境:AthlonXP 3200+,DDR400 512M,WindowsXP SP2,本机的SQL Server 2000,中文 Northwind 数据库(从Access导入)的产品表,约70条记录。
测试序号 | 程序类型 | 测试方法 |
测试结果 (每秒请求数) |
SQLServer 所占用资源 |
ASP.Net 所占用资源 |
1 | Web服务 | 用产品表填充DataSet,并返回记录数 | 250次 | 100% | - |
2 | Web服务 | 用产品表填充DataSet,并返回 DataSet | 138次 | 54% | 46% |
3 | Web应用程序 | 用产品表填充DataSet,并绑定 DataGrid | 70次 | 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 的性能,几乎能够提高一倍。
转载于:https://www.cnblogs.com/jerrypen/archive/2011/09/23/2187816.html
通过改善架构来提高 ASP.Net 应用程序的性能相关推荐
- Asp.net性能优化-提高ASP.Net应用程序性能的十大方法
一.返回多个数据集 检查你的访问数据库的代码,看是否存在着要返回多次的请求.每次往返降低了你的应用程序的每秒能够响应请求的次数.通过在单个数据库请求中返回多个结果集,可以减少与数据库通信的时间,使你的 ...
- 提高ASP.NET应用程序性能的几招方法
以下经验总结自,并且经过验证 1,不参与POSTBACK机制的控件,不要用服务器控件,尽量用静态HTML标记 2,编译时使用RELEASE配置 3,正式投入应用时,记着将DEBUG设为FALSE 4, ...
- 「技术架构」10个提升应用程序性能的倚天剑和屠龙刀
提高web应用程序性能比以往任何时候都更加重要.在线经济活动的份额正在增长;超过5%的发达国家的经济现在是在互联网上的(参见参考资料中的互联网统计数据).而我们这个始终在线.高度连接的现代世界意味着用 ...
- 使用ASP.NET Abstractions增强ASP.NET应用程序的可测试性
概述 在阅读本文之前,兄弟们请先注意两点: 我们现在谈的是传统ASP.NET应用程序的可测试性,而不是ASP.NET MVC应用程序的可测试性. 我们现在谈的是"增强",而不是说传 ...
- 提高 ASP.NET Web 应用性能的 24 种方法和技巧
那性能问题到底该如何解决?以下是应用系统发布前,作为 .NET 开发人员需要检查的点. 1.debug=「false」 当创建 ASP.NET Web应用程序,默认设置为「true」.开发过程中,设置 ...
- 【转】新思想、新技术、新架构——更好更快的开发现代ASP.NET应用程序(续1)
上周星期天开通了博客并发布了第一篇文章<新思想.新技术.新架构--更好更快的开发现代ASP.NET应用程序>,汇集了一些比较流行的技术和开源项目,也把自己的程序架构.部分代码风格.前端表现 ...
- .NET开发人员必看:提高ASP.NET Web应用性能的24种方法和技巧——转
性能问题到底该如何解决?以下是应用系统发布前,作为 .NET 开发人员需要检查的点. 1.debug=「false」 当创建 ASP.NET Web应用程序,默认设置为「true」.开发过程中,设置为 ...
- 提高ASP性能的最佳选择
ASP开发人员为了在他们的设计项目中获得更好的性能和可扩展性而不断努力.幸运地是,有 许多书籍和站点在这方面提供了很好的建议.但是这些建议的基础都是从ASP平台工作的结构 上所得出的结论,对实际获得的 ...
- javaweb k8s_K8S微服务核心架构学习指南 ASP.NET Core微服务基于K8S 架构师必备Kubernetes教程...
K8S微服务核心架构学习指南 ASP.NET Core微服务基于K8S 架构师必备Kubernetes教程 课程内容是关于Kubernetes微服务架构学习课程,基于K8S开展ASP.NET核心进行微 ...
最新文章
- docker深入1-导入导出images和container的方式
- Learning Cocos2d-x for WP8(9)——Sprite到哪,我做主
- python学习(十八) 程序打包
- JAVA——文档注释(javavdoc)通用注释-超链接@see与@link的使用
- 数据结构:排序趟数 / 比较次数与序列的原始状态有关的排序方法有哪些?
- spring配置主库从库_spring下的数据库主从分离(下)
- sudo apt update提示某个源超时
- 如何收缩超大的SharePoint_Config数据库
- 2021吉林高考26日几点可以查询成绩,2021吉林高考成绩查分时间及入口
- [整理]国际学术会议
- 东芝移动硬盘无法弹出密保,无法执行该软件,因为未启动需要的服务程序
- Java中文字转拼音工具类
- unity二維碼生成(新)
- 以太坊漏洞分析————4、底层函数误用漏洞
- 微信小程序答题页——swiper渲染优化及swiper分页实现
- python绘制相频特性曲线_数据分析之Matplotlib和机器学习基础
- 四川绵阳成立大中华区首个 IBM大数据分析竞争力中心
- R语言逻辑回归预测分析付费用户
- TensorFlow-神经网络初体验
- 新概念二册 Lesson 21 Mad or not?是不是疯了? ( 被动语态)
热门文章
- Could not find a suitable table factory for ‘org.apache.flink.table.factories.TableSourceFactory‘
- Java中new function另外新建个文件的写法
- flink1.12在ubuntu下面的编译记录(转载+自己整理)
- Google Drive的linux客户端使用(还没弄完)
- 天天生鲜的用户登录机制和redis的作用
- 大话数据结构 队列10:数组循环队列
- C++自定义sobel求梯度
- ie8 object param没有效果_如何用php实现分页效果
- android+4.2+mtp+在此设备上不支持+文件类型,Nexus 4无法通过MTP显示文件
- 08.Eclipse下Ndk开发(使用fmod实现QQ变声功能)