• asp.net编译模型


    当一个web应用程序完成后,部署到iis中有以下几种方式:

    源码部署:

    就是把工程内的文件原封不动的Copy到iis中。当有请求的时候,asp.net会在编译目录的根目录下寻找一个以.compiled为扩展名的保留文件(Preservation File)。每一个Page页面都会有一个对应的保留文件。保留文件只会存在于编译根目录下。里面记录了Page类编译后的相关信息。如果没有,则会对请求的页面进行动态编译。编译生成dll的目录一般是C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727 \Temporary ASP.NET Files。编译的范围是以目录为单位。编译的过程是将前台aspx页面与后台cs页合并生成dll,并在编译目录的根目录下生成一个保留文件。如果有,则判断从上一次编译后相关源代码是否进行过修改,如果修改过了,则再次编译。最后通过保留文件提供的信息来加载编译后的程序集及以后操作。

    比如一个default.aspx页面。在dll中会产生两个与其对应的类:default与default_aspx。其中前者只编译了后台cs代码,后者才是default.aspx页面的最终体现。

    优点:最灵活。

    缺点:很差安全性。首次访问很慢

    可更新的预编译部署:

    这种方式会将所有后台cs文件编译到一个dll程序集中,当有请求时,会对相应的前台aspx文件与dll程序集中相应的类进行动态编译。

    但是以这种方式生成的dll与完全动态生成的Dll有所不同:比如一个default.aspx页面,在bin目录中的dll里只会有 default类,没有default_aspx类,因为只是部份编译。等到对default.aspx页面进行了访问后,会在Temporary ASP.NET Files目录下生成另一个dll文件,此文件只包含default_aspx类,也就是说,只编译后台cs代码所生成的类与最终aspx与cs合并后生成的类不在一个程序集里面。

    优点:灵活。

    缺点:较差安全性。首次访问慢。

    不可更新的预编译部署:

    这种方式会将所有前台aspx与后台cs文件编译到一个dll程序集中,但还是会留下aspx占位文件。当有请求时,直接进行操作。

    优点:不灵活。

    缺点:无首次访问慢的问题。

    参考的文章:

    ASP.NET2.0编译模型

    http://www.cnblogs.com/papaya73/archive/2008/07/04/1235977.html

    深入剖析ASP.NET的编译原理之一:动态编译(Dynamical Compilation)

    http://www.cnblogs.com/artech/archive/2007/05/21/753620.html

    深入剖析ASP.NET的编译原理之二:预编译(Precompilation)

    http://www.cnblogs.com/artech/archive/2007/05/26/760292.html

  • 相关阅读:
    导出表格,导出表格为excel,导出表格带样式,怎么导出表格数据为excel并且带样式呢
    webpack打包文件 可以npm cdn使用
    Webpack的externals的使用
    如何在微信小程序中使用iconfont
    如何发布和取消发布 NPM 包?
    js中数组对象去重的方法
    小程序列表性能优化
    wepy全局拦截器
    js中prototype与__proto__的关系详解
    JavaScript中本地对象、内置对象和宿主对象
  • 原文地址:https://www.cnblogs.com/ljzforever/p/1681450.html
Copyright © 2020-2023  润新知