学习ASP.NET MVC5框架揭秘笔记-ASP.NET MVC路由(五)

2.AreaRegistration的缓存

Area的注册(主要是基于Area的路由映射注册)通过具体的AreaRegistration来完成。在应用启动的时候,ASP.NET MVC会遍历通过调用BuildManager的静态方法GetReferencedAssemblies得到的程序集列表,并从中找到所有AreaRegistration类型。如果一个应用涉及太多的程序集,则这个过程可能会耗费很多时间。为了提高性能,ASP.NET MVC会对解析出来的所有AreaRegistration类型列表进行缓存。

ASP.NET MVCAreaRegistration类型列表的缓存是基于文件的。具体来说,当ASP.NET MVC框架通过程序集加载和类型反射得到了所有的AreaRegistration类型列表后,会对其序列化并将序列化的结果保存为一个物理文件。这个名为“MVC-AreaRegistrationTypeCache-xml”的XML文件被保存在ASP.NET的临时目录下,具体的路径如下。其中第一个针对寄宿于Local IIS中的Web应用,后者针对直接通过Visual Studio Developer Server或者IIS Express作为宿主的应用。

1.%Windir%\Microsoft.NET\Framework\v{version}\TemporaryASP.NET Files\{appname}\...\...\UserCache\

2.%Windir%\Microsoft.NET\Framework\v{version}\TemporaryASP.NET Files\root\...\...\UserCache\

下面的XML片段体现了这个作为所有AreaRegistration类型缓存的XML文件的结构。我们从中可以看到所有的AreaRegistration类型的名称,连同它所在的托管模块和程序集名称都被保存了下来。当AreaRegistration的静态方法RegisterAllAreas被调用之后,系统会试图加载该文件,如果该文件存在并且具有期望的结构,那么系统将不再通过程序集加载和反射来解析所有AreaRegistration的类型,而是直接对文件内容进行反序列化得到所有AreaRegistration类型的列表。

<?xml version="1.0" encoding="utf-8"?>
<!--This file is automatically generated. Please do not modify the contents of
this file.-->
<typeCache lastModified="3/3/2014 10:06:29 AM"
mvcVersionId="72d59038-e845-45b1-853a-70864614e003">
<assembly name="Artech.Admin, Version=1.0.0.0, Culture=neutral,
PublicKeyToken=null">
<module versionId="07be22a1-781d-4ade-bd22-34b0850445ef">
<type>Artech.Admin.AdminAreaRegistration</type>
</module>
</assembly>
<assembly name="Artech.Portal, Version=1.0.0.0, Culture=neutral,
PublicKeyToken=null">
<module versionId="7b0490d4-427e-43cb-8cb5-ac1292bd4976">
<type>Artech.Portal.PortalAreaRegistration</type>
</module>
</assembly>
</typeCache>


如果这样的XML不存在,或者具有错误的结构(这样会造成针对AreaRegistration类型列表的反序列化失败),ASP.NET MVC框架会按照上述的方式重新解析出所有AreaRegistration类型列表,并将其序列化成XML保存到这个指定的文件中。值得一提的是,针对Web应用的程序编译会促使这些缓存文件的清除。

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ASP.NET MVC 5 框架揭秘》以一个模拟ASP.NET MVC内部运行机制的“迷你版MVC框架”作为开篇,其目的在于将ASP.NET MVC真实架构的“全景”勾勒出来。接下来本书以请求消息在ASP.NET MVC框架内部的流向为主线将相关的知识点串连起来,力求将”黑盒式”的消息处理管道清晰透明地展示在读者面前。相信精读本书的读者一定能够将ASP.NET MVC从接收请求到响应回复的整个流程了然于胸,对包括路由、Controller的激活、Model元数据的解析、Action方法的选择与执行、参数的绑定与验证、过滤器的执行以及View的呈现等相关的机制具有深刻的理解。 本书以实例演示的方式介绍了很多与ASP.NET MVC相关的很好实践,同时还提供了一系列实用性的扩展,相信它们一定能够解决你在真实开发过程中遇到的很多问题。本书末章提供的案例不仅仅用于演示实践中的ASP.NET MVC,很多的架构设计方面的东西也包含其中。除此之外,本书在很多章节还从设计的角度对ASP.NET MVC的架构进行了深入分析,所以从某种意义上讲本书可以当成一本架构设计的书来读。 ASP.NET MVC 5 框架揭秘 目录 第1章 ASP.NET + MVC 第2章 路由 第3章 Controller的激活 第4章 Model元数据的解析 第5章 3个描述对象 第6章 Model的绑定(上篇) 第7章 Model的绑定(下篇) 第8章 Model的验证(上篇) 第9章 Model的验证(下篇) 第10章 Action方法的执行 第11章 View的呈现 第12章 过滤器 第13章 特性路由 第14章 案例实践
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值