设为首页收藏本站

新微赢技术网

 找回密码
 注册
搜索
热搜: 回贴
查看: 238|回复: 4
打印 上一主题 下一主题

改善ASP.NET2.0性能的五件法宝

[复制链接]
跳转到指定楼层
1#
发表于 2009-3-16 14:31:48 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
 大多数ASP.NET程序员都会遇到这样的问题,当我们的web程序开发周期快要结束的时候,却发现还有很多性能方面的问题需要解决。如果您遇到这样的情况,那真是太糟糕了。也许每一个开发人员在开发Web程序时都会制定一个目标,如使用适当的内存以及如何处理Web请求等。虽然这些目标已经制定,但可能仍然会因为使用某些错误的方法来改善应用程序的性能而使事情变得更糟糕。因此,在本文中将给出了五个步骤来优化ASP.NET2.0应用程序,希望这些要点会给读者以启迪,以便使广大的开发人员不会走弯路。

  1. 适当地处理数据访问对象

  如果我们没有正确处理数据访问对象,就会大量消耗我们的服务器内存。当建立一个数据访问对象时,充分理解它们的生命周期以及不需要它们时如何处置是非常必要的。我经常看到很多开发人员建立、打开和销毁DataReader对象,但却不对它做任何处理。如果能确保我们的数据访问对象适当地被管理,这将在很大程度上解决IIS为什么直接机器快崩溃时才释放内存的另人头痛的问题。就先让我们在解决方案中查找关于DataReader实例吧,对于发现的每一个DataReader实例,请确保它们已经被关闭或是被释放。建议使用try/catch/finally块来处理。如下面代码所示:

using (IDataReader reader = MySite.GetSearchResults())

{
//Consume the datareader
while (reader.Read())
{
//Do something with the data
}
)

使用try/catch/finally 块

IDataReader reader;
try
{
reader = MyWeb.GetSearchResults();
while (reader.Read())
{
//Do something with the data
}
}
catch (Exception ex)
{
//Log the exception
}
finally
{
//如果这个对象存在,dispose这个对象
if (reader != null)
reader.Dispose();
}

  2. 管理IIS应用程序池

  在典型的应用中,当处理一个Web应用程序时,这个Web程序由多个部分组成。通常有我们的主Web站点,一个或多个Web服务,或是一个图象处理程序。IIS6为我们提供了为多个应用程序建立程序池的机会。应用程序池允许我们使应用程序在各自的单独进程中运行。这么做的好处是将我们的应用程序的不同组成部分分开,使它们分别运行在自己的内存空间中。由于每个处理进程的内存达到800-900M时系统就会变得很慢,因此,需要应用程序分散到不同的处理进程中,这样每个工作进程占有的内存就不会那么大了。这样会从某种程度上提高系统运行的效率。关于如果建立应用程序池的问题,请参阅微软的相关技术文档。

  3. 管理ASP.NET状态

  为了更进一步地改善应用程序性能,对ASP.NET的不同的状态类型有一个深入的了解是非常必要的。ASP.Net有许多不同的状态,但是我们应该弄清楚什么是应用程序状态、会话状态和profile属性。因为这些状态都保存在服务器的内存上。所有应尽量避免保存太多这三种状态的数据,除非有必要保存它们。如果我们需要在会话状态保存数据,就只存我们需要的数据,如标识字段或静态数据频繁被使用,因此,它们可以保存在会话状态中。现在网上有很多关于介绍ASP.NET这三种状态的文章,如果读者想更进一步发觉它们的潜力,可以阅读相关的资料。每一种状态都应该被使用在适合它们的地方。因此,花时间学习和理解它们是非常必要的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

申请友链|小黑屋|最新主题|手机版|新微赢技术网 ( 苏ICP备08020429号 )  

GMT+8, 2024-11-18 20:19 , Processed in 0.087362 second(s), 8 queries , Gzip On, Memcache On.

Powered by xuexi

© 2001-2013 HaiAn.Com.Cn Inc. 寰耽

快速回复 返回顶部 返回列表