2天时间,聊今年最热的 Agent、上下文工程、AI 产品创新等话题。2025 年最后一场~ 了解详情
写点什么

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:534532
用户头像

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

关注

评论

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

利用YashanDB实现企业数据实时监控与分析

数据库砖家

300 毫秒生成情感 AI 视频,Nuance Labs 获千万美元融资;AirPods Pro 3 将集成实时语音翻译丨日报

RTE开发者社区

答题赚现金程序介绍

微擎应用市场

CFD专栏丨ultraFluidX 动力舱热仿真

Altair RapidMiner

CAE Hypermesh CFD 流体仿真 ultraFluidX

利用YashanDB实现多节点数据库高效同步管理

数据库砖家

利用YashanDB实现企业级LINEAGE数据追踪

数据库砖家

利用YashanDB实现企业级数据分析的实用指南

数据库砖家

AI教育白皮书解读 | 医学教育数智化转型新机遇,“人工智能+”行动实践正当时

ModelWhale

AI教育 医学 人工智能+

认知引擎:企业下一个决胜分水岭

字节跳动数据平台

易客云会员系统相关介绍

微擎应用市场

联通SD-WAN和移动SD-WAN在网络质量服务价格等对比

宽炜网络

SD-WAN

利用YashanDB实现企业数据实时同步与异地备份

数据库砖家

AI英语阅读APP的核心功能

北京木奇科技有限公司

AI技术开发 软件外包公司 AI英语学习

运维审计-企业信息安全的隐藏守护人

行云管家

网络安全 堡垒机 运维审计

一文让你了解国产浏览器和国密浏览器的区别

行云管家

国密 国密浏览器 国产浏览器 国密算法

国际专线网络:价格与品质齐飞,助您畅达全球市场

宽炜网络

利用YashanDB实现大规模数据分布式存储与管理

数据库砖家

利用YashanDB实现企业数据分布式存储架构

数据库砖家

使用HTML、CSS和JavaScript构建单词搜索游戏的技术指南

qife122

数据结构 前端开发

利用YashanDB实现企业自动化报表系统

数据库砖家

离散型行业数字化工厂MES规划方案

万界星空科技

mes 万界星空科技 制造业转型 离散型行业 离散型MES

FunctionAI 图像生成:简化从灵感到 API 调用的每一步

阿里巴巴云原生

阿里云 云原生 FunctionAI

MyEMS:功能强大的开源能源管理系统,助力企业实现精细化能效管理

开源能源管理系统

开源 能源管理系统

基于 TensorFlow 的 PyTorch-MNIST 手写体识别系统开发案例

华为云开发者联盟

tensorflow MNIST PyCharm Pro 华为开发者空间

2025 年创作者的变现路径:广告投放还是长期合作?

Wolink

网红 海外推广 沃链Wolink 达人营销

MyEMS:开源能源管理系统的实践与价值

开源能源管理系统

开源 开源能源管理系统

0基础带你精通Java对象序列化--以Hessian为例|得物技术

得物技术

编程语言 中间件

基于 MaaS 结合开发者空间 Astro 低代码平台的就业问卷 AI 择业咨询方案

华为云开发者联盟

Astro 华为开发者空间

当“数据波动”遇上“智能归因”,谁在背后画出那张因果地图?

Aloudata

数据分析 agent ChatBI 智能问数 智能归因

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