首页 > Web开发 > 详细

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

时间:2015-06-24 19:04:38      阅读:316      评论:0      收藏:0      [点我收藏+]

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应用的程序编译会促使这些缓存文件的清除。

 

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

原文:http://blog.csdn.net/yejinwei1220/article/details/46623495

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!