ASP.NET 4运行时的主要改进
性能
可扩展性
其它
性能相关的新特性
新的资源监控器选项
Session State的改进
应用程序的自动运行
Response.RedirectPermanent
资源监控
CPU和内存都是有限资源
传统监测都是在进程级的
无法监测某个应用域
CLR 4引进了“ARM”
Application domain Resource Management
基于ARM的性能计数器
Managed Memory Used
% Managed Processor Time
Session State
跨进程使用的session state
变得更快
自动压缩
在很大程度上减少网络流量
大小减少到1/3到2/3
通过指令控制session state开/关
仅在真正需要时才用
局部的session state
仅使用指定key的Session来减少网络流量
应用程序的自动运行
提高网站性能
使得个别网页运行得更快
为第一次运行网站应用“隐藏”启动成本
通过ASP.NET和IIS隐藏启动
IIS7.5能够“自启动”工作进程和应用程序
ASP.NET 4结合IIS7.5实现自启动
我们可以透过在applicationHost.config中设定以下内容让特定的Pool永远在暖机状态
<applicationPools>
<add name="MyApplicationPool" startMode="AlwaysRunning" />
</applicationPools>
应用程序的自动运行
IIS team创建了一个warm-up module
运行在IIS7.5的顶端提供auto-start特性
支持任何ASP.NET版本
http://www.iis.net/extensions/ApplicationWarmUp
Response.RedirectPermanent
Response.Redirect生成HTTP 302的状态码,是临时重定向,会引发客户端对web服务器的2次请求
Response.RedirectPermanent生成HTTP 301的状态码,是永久重定向,下次访问时浏览器或搜索引擎直接访问重定向后的地址
可扩展性的改进
Session State
Output Cache
HTML, URL, HTML attribute, HTTP headers可自定义编码
Request Validation
Session State的扩展
仍可通过SessionStateStoreProviderBase实现自定义的Session存储机制
官方将提供新的Session State Provider
Output Cache的扩展
通过OutputCacheProvider派生出一个新的class实现自定义的Output Cache Provider
官方将提供新的Output Cache Provider
Windows AppFabric Caching(分布式缓存)
基于磁盘存储的Output Cache Provider
扩展机制支持
绝对过期时间
文件依赖
静态替换和验证等
自定义编码的扩展
通过System.Web.Util.HttpEncoder派生出一个新的class实现自定义编码
并在web.config中设定
<httpRuntime encoderType="Samples.MyCustomEncoder, Samples" />
当调用System.Web.HttpUtility或System.Web.HttpServerUtility的公开方法时自动调用我们自定义的编码逻辑
Request Validation的扩展
通过System.Web.Util.RequestValidator派生出一个新的class实现自定义RequestValidation
并在web.config中设定
<httpRuntime requestValidationType="Samples.MyValidator, Samples" />
然后网站的Request均使用自定义的逻辑进行检查
其它
Web.config的httpRuntime可以设置url长度,字符限制等规则
maxRequestPathLength
maxQueryStringLength
requestPathInvalidChars
通过RouteTable.Routes对URL重写