写点什么

PDC 09:ASP.NET 4 运行时的改进

  • 2009-11-26
  • 本文字数:1513 字

    阅读完需:约 5 分钟

在近期举办的 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 表示,这个功能并不会给程序性能带来提高,只是让用户避免遭遇程序冷启动所带来的延迟效果。

你可以在 PDC 2009 的网站上浏览或下载本次演讲的完整录像及幻灯片等资源。

2009-11-26 04:534386
用户头像

发布了 157 篇内容, 共 60.4 次阅读, 收获喜欢 6 次。

关注

评论

发布
暂无评论
发现更多内容

数据治理项目调研环节思考

agileai

项目管理 数据中台 数据仓库 数据治理 主数据

企业网站该怎样选择网站域名?

源字节1号

软件开发

leetcode 69. Sqrt(x) x 的平方根(简单)

okokabcd

LeetCode 查找

使用 Amazon DevOps Guru for Serverless 自动检测 Lambda 函数中的运行问题

亚马逊云科技 (Amazon Web Services)

DevOps Lambda severless

离线数仓建设,企业大数据的业务驱动与技术实现

袋鼠云数栈

乏善可陈的Neuralink

图灵教育

ShardingSphere 在金融支付场景下的实践与调优

SphereEx

Apache 数据库 开源 ShardingSphere SphereEx

微信小程序和 uniapp 的区别是什么?

CRMEB

单机GPU云服务器的深度学习训练和预测模型分析

Finovy Cloud

云服务器 GPU服务器

GPU不可不知的指标项

AIWeker

人工智能 gpu 5月月更

Wallys/QCN9074 /11ax/ 4x4 /5G M.2

wallys-wifi6

QCN9074 11 ax

TDengine 社区问题双周精选 | 第一期

TDengine

数据库 tdengine

域成员服务器怎么会突然脱域?

BUG侦探

脱域 域信任关系 windows更新

EAM系统解决方案

低代码小观

资产管理 企业管理系统 企业设备管理 设备巡检管理系统 企业管理软件

如何实现客户自助服务?打造产品知识库

小炮

知识库

打开人工智能“黑盒”,发展可解释、可扩展、可信赖、安全可靠的人工智能

博文视点Broadview

青藤《关键信息基础设施增强保护安全实践》论文入选中国科技核心期刊

青藤云安全

信息安全 关键信息 安全保护

墨天轮高分技术文档分享——Oracle升级迁移篇(共96个)

墨天轮

MySQL 数据库 oracle postgresql 国产替代

DCM:一个能够改善所有应用数据交互场景的中间件新秀

华为云开发者联盟

数据处理 数据交互 多样性数据源 DCM

Spring Cloud OpenFeign 的 5 个优化小技巧!

王磊

SpringCloud

错过了太后悔,九大绝招大公开,详解华为低时延技术

华为云开发者联盟

云计算 音视频 华为云

易安联参编《SASE技术与应用场景白皮书》正式发布

权说安全

网络安全 sase

关于2022年12代C/C++Linux服务器开发高级架构师课程体系分析

C++后台开发

后端开发 Linux服务器开发 C++后台开发 Linux后台开发 服务器开发架构师

极客星球 | 机器学习赋能商业地产决策进阶

MobTech袤博科技

静亦求精,罗技MX高性能键鼠组合上市!

极客天地

ironSource开通业内首家微信客户服务平台, 为中国客户提供本地支持

极客天地

发现一个开源项目优化点,点进来就是你的了

捉虫大师

开源 性能优化 sentinel 5月月更

有没有支持vmware/openstack/zstack私有云的堡垒机?

行云管家

私有云 云服务器 堡垒机 行云管家

国内私有云厂商有哪些?排名怎么样?

行云管家

网络安全 私有云 私有云厂商

剧透!2022开发者关注的开源技术全解析

华为云开发者联盟

开源 mindspore kubeedge OpenHarmony open Euler

主管发话:一周搞不定用友U8 ERP跨业务数据分析,明天就可以“毕业”了

葡萄城技术团队

数据分析 BI 用友

PDC 09:ASP.NET 4运行时的改进_.NET_赵劼_InfoQ精选文章