我是一个新手,对于页面的生命周期一直不理解今天好好的学习了一次。
在学习的过程中充分认识到了MSDN的作用,做为新手MSDN是一定要看的,不用花钱买书了,也不用在网站上搜索相关信息了。他们都是照搬MSDN的。
做为新手,对于asp.net的编译过程也不清楚,每次上传dll文件或者App_Code下的文件时后台用户的会话都被清空了,一直不清楚asp.net内部是怎么对这个进行处理的,觉得肯定和编译有关系,今天终于在MSDN上找到了答案,在这里和大家分享。
为了使用应用程序代码为用户提出的请求提供服务,ASP.NET 必须首先将代码编译成一个或多个程序集。程序集即文件扩展名为 .dll 的文件。您可以采用多种不同的语言来编写 ASP.NET 代码,如 Visual Basic、C#、J# 和其他语言。当在编译代码时,会将代码翻译成一种名为 Microsoft 中间语言 (MSIL) 的与语言和 CPU 无关的表示形式。运行时,MSIL 将运行在 .NET Framework 的上下文中,.NET Framework 会将 MSIL 翻译成 CPU 特定的指令,以便计算机上的处理器运行应用程序。
编译应用程序代码具有许多好处,其中包括:
-
性能 编译后的代码的执行速度要比诸如 ECMAScript 或 VBScript 的脚本语言快得多,因为它是一种更接近于机器代码的表示形式,并且不需要进行其他分析。
-
安全性 编译后的代码要比非编译的源代码更难进行反向工程处理,因为编译后的代码缺乏高级别语言所具有的可读性和抽象。此外,模糊处理工具增强了编译后的代码对抗反向工程处理的能力。
-
稳定性 在编译时检查代码是否有语法错误、类型安全问题以及其他问题。通过在生成时捕获这些错误,可以消除代码中的许多错误。
-
互操作性 由于 MSIL 代码支持任何 .NET 语言,因此您可以在代码中使用最初用其他语言编写的程序集。例如,如果您正在用 C# 编写 ASP.NET 网页,您可以添加对使用 Visual Basic 编写的 .dll 文件的引用
ASP.NET 编译结构包括许多功能,其中包括:
-
多语言支持。
-
自动编译。
-
灵活部署。
-
可扩展生成系统。
以下各节逐个说明这些功能。
多语言支持
在 ASP.NET 2.0 中,您可以在同一个应用程序中使用不同的语言(如 Visual Basic 和 C#),这是因为 ASP.NET 将为每一种语言分别创建一个程序集。对于存储在 App_Code 文件夹中的代码,您可以为每种语言指定一个子文件夹。有关 App_Code 文件夹的更多信息,请参见 ASP.NET 网站中的共享代码文件夹。
自动编译
当用户首次请求网站的资源时,ASP.NET 将自动编译应用程序代码和任何依赖资源。通常,ASP.NET 为每个应用程序目录(如 App_Code)创建一个程序集,并为主目录创建一个程序集。(如果一个目录中的文件是用不同编程语言编写的,将为每种语言分别创建程序集。)可以在 Web.config 文件的 Compilation 节指定将哪些目录编译成单个程序集。
灵活部署
因为 ASP.NET 在首次用户请求时编译网站,所以您只需将应用程序源代码复制到成品 Web 服务器上即可。不过,ASP.NET 还提供了预编译选项,通过这些选项,您可以在部署网站之前先进行编译,或者在部署网站之后、但在用户请求该网站之前进行编译。预编译有若干优点。由于 ASP.NET 编译网站时不存在延迟时间,因而预编译可以改进首次请求时网站的性能。预编译还能帮您找到不然只有当用户请求页时才能找到的错误。最后,如果在部署网站之前预编译网站,则可以部署程序集,而不必部署源代码。
可以使用 ASP.NET 编译器工具 (ASPNET_Compiler.exe) 预编译网站。该工具提供下列预编译选项:
-
就地编译 此选项执行与动态编译期间发生的相同编译过程。可以使用此选项编译已经部署到成品服务器的网站。
-
不可更新完全预编译 可以使用此选项来编译应用程序,然后将编译后的输出复制到成品服务器。所有应用程序代码、标记和用户界面代码都将编译为程序集。占位符文件(如 .aspx 页)仍存在,因此您可以执行某些文件特定的任务(如设置权限),但文件中不包含可更新的代码。为了更新任何页或任何代码,您必须再次预编译并再次部署网站。
-
可更新的预编译 该选项类似于“不可更新完全预编译”,不同之处在于用户界面元素(如 .aspx 页和 .ascx 控件)保留其所有标记、用户界面代码和内联代码(如果有的话)。您可以在部署之后更新文件中的代码;ASP.NET 将检测对文件所做的这些更改并重新进行编译。请注意,预编译期间代码隐藏文件(.vb 或 .cs 文件)中的代码都将内置到程序集中,因此如果不重新执行预编译和部署步骤,您将无法更改这些代码。
有关更多信息,请参见 ASP.NET 网站预编译概述。
可扩展生成系统
ASP.NET 使用 BuildProvider 类来生成项,如 .aspx 页、.ascx 文件和全局资源。您可以通过创建从 BuildProvider 类继承的类,来扩展和自定义 ASP.NET 生成系统,以编译自定义资源。例如,您可以添加新的文件类型,然后编写生成该特定类型的 BuildProvider。