微软PDC2009直击:改进ASP.NET 4运行时

开发 后端
在微软PDC2009大会上,对于ASP.NET 4运行时引人瞩目。本文将讨论的是ASP.NET 4运行时的相关改进。

对于ASP.NET 4大家还是有很多期待的,本文将为大家讲述的是在微软PDC2009大会上关于改进ASP.NET 4运行时部分的内容,希望对大家有所帮助。

#T#

在近期举办的PDC 09大会中,ASP.NET团队的程序经理Stefan Schackow展示了ASP.NET 4在运行时方面的改进。改进主要围绕“性能”和“可扩展性”两个方面进行,具体表现三点:新的资源监视选项、会话状态以及输出缓存的扩展能力。

对于一个Web服务器来说,CPU和内存占用量是两个较为重要的性能指标,而两者相比之下,内存相对又更容易成为瓶颈。自从IIS 6引入了“应用程序池”的概念开始,多个ASP.NET应用程序便可以工作在单个进程之中。但是在这种情况下,我们就很难通过性能监视器来获得某个特定的Web应用程序所占用的系统资源,这有时会让问题的定位变得困难重重。由于CLR 4可以获得某个单独的应用程序域所占用的CPU,以及堆上托管内存的数量,于是在ASP.NET 4中引入了一个名为“应用程序域资源管理(AppDomain Resource Management,ARM)”的功能,它会检测并预估单个Web应用程序资源占用的趋势,并将各种数据开放给性能计数器。

在ASP.NET 4中,ARM功能默认并不会开放。ARM功能无法通过修改单独应用程序的web.config文件打开,你需要去系统的.NET配置目录中修改Aspnet.config文件,在节点中将AppDomainResourceMonitoring启用,***还需要重启应用程序池。然后便可以在性能监视器中查看ASP.NET Applications分类中的相应计数器。值得注意的是,性能监视器中显示的托管内存占用并非是精确值,而是一个“预测”,这是因为只有在第2代的GC发生时,CLR才能获得托管堆中内存占用的准确数量。

在会话状态(Session State)使用方面,ASP.NET 4也作出了有效的改进。Stefan表示,客户中使用会话状态的ASP.NET应用程序数量之多超过了他的想象,尤其是跨进程(Out of Process)的Session使用方式更是影响Web应用程序性能的主要因素之一。因此,ASP.NET 4利用.NET中的压缩功能,对跨进程的会话状态进行了压缩,包括SQL Server和会话状态服务器——而这一切只需要在web.config中进行配置即可。进行压缩之后可以节省1/3到2/3的流量,不过会带来一些Web服务器的CPU压力。

目前,ASP.NET运行时会根据当前请求的Http Handler是否实现IRequireSessionState接口来判断是否启用Session。在ASP.NET 4中,开发人员可以通过编程接口来控制某个请求是否启用会话状态。此外,ASP.NET 4还提供了“部分会话状态(Partial Session State)”的功能,即只加载会话状态指定key的数据,这除了有效减少会话状态的通信开销外,也提供了额外的扩展能力。例如,ASP.NET团队打算在AppFabric分布式缓存(其前身为Velocity)正式发布后,基于AppFabric构建一个新的Session State Provider。

ASP.NET4在输出缓存(Output Cache)上也增加了一些扩展点,主要可以让开发人员为控件和请求级别的缓存定制存储机制,例如磁盘,分布式缓存,甚至是云中,而在目前的ASP.NET中,所有数据都只能缓存在进程的内存中。这个扩展机制支持缓存的绝对过期(Absolute Expiration)时间,文件依赖,和静态替换和验证回调功能,不过为了保证缓存实现的通用性,它不支持相对过期(Sliding Expiration)时间和其他形式的依赖。与会话状态一样,在AppFabric发布之后,ASP.NET团队也会提供相应的Ouput Cache Provider,不过按照计划这会在ASP.NET 4 RTM之后才会发布了。Stefan表示,这些额外的Provider扩展都会作为开源项目托管在CodePlex网站上。

***,基于IIS 7.5的“预热”功能,ASP.NET 4可以让IIS 7.5自动运行web.config中指定的页面。Stefan表示,这个功能并不会给程序性能带来提高,只是让用户避免遭遇程序冷启动所带来的延迟效果。

责任编辑:彭凡 来源: InfoQ
相关推荐

2009-11-17 13:51:08

微软PDC2009大会

2009-12-10 09:23:13

ASP.NET开发

2009-11-19 09:33:28

SilverlightPDC2009

2009-07-20 16:14:39

ASP.NET运行时

2023-06-30 14:03:00

ASP.NET模块化设计

2010-01-08 11:04:06

ASP.NET 4SEO

2009-11-18 09:50:53

微软PDC2009大会

2011-08-04 10:34:48

ASP.NET MVC

2011-01-05 08:52:15

ASP.NET 4

2009-08-05 17:54:04

ASP.NET运行模式

2009-09-04 16:28:05

ASP.NET 4.0

2015-07-20 15:44:46

Swift框架MJExtension反射

2009-07-28 17:02:10

ASP.NET运行环境

2009-07-22 17:45:35

ASP.NET教程

2024-03-21 09:15:58

JS运行的JavaScrip

2009-07-28 17:17:19

ASP.NET概述

2009-08-03 14:22:33

什么是ASP.NET

2009-12-07 10:40:24

.NET 4.0

2009-07-22 16:34:36

使用T4ASP.NET MVC

2009-04-02 11:00:09

微软ASP.NETMVC
点赞
收藏

51CTO技术栈公众号