.Net 的代码分离原理
“代码分离”是一种为了更好的分离商业逻辑和美工页面而设计的一种新的编译模型,它本身和ASP的混合模式存在着根本上的区别。因为ASP是使用脚本语言(例如VBscript或者Javascript)编写的,所以当我们访问ASP页面时,脚本的执行引擎会对代码进行线性分析然后再解释执行。而ASP.NET使用了编译模式,所以执行效率要比ASP高很多。在我们设计ASP.NET应用程序时,我们可以选在“内联”或者“代码分离”两种方式来编写应用程序。
“代码分离”在技术实现上其实就是使用了“继承”这样的技术,例如我们在普通的aspx页面中会经常看到以下的代码:
<%@ Page language="c#" Codebehind="jstest.aspx.cs" AutoEventWireup="false" Inherits="WebAppCSharp.jstest" %>
其中“Inherits”关键字就表明了该aspx页面继承了“jstest”这个类,而“Codebehind”关键字表明了该页面和“jstest.aspx.cs”这个cs文件是相关联的。这也就是为什么我们在ASP.NET应用程序中所有的控件在cs文件中的访问修饰符都声明为protected的原因了。当我们去访问一个aspx页面时,此时就会动态的产生这个aspx页面的新类(我们可以在framework文件夹下的Temporary ASP.NET Files中找到一个随机命名的cs文件,这个文件就是我们当前页面产生的新类,其中我们就可以看到如下代码:
public class jstest_aspx : WebAppCSharp.jstest, System.Web.SessionState.IRequiresSessionState
也就是说,当前的aspx页面继承了代码分离中的cs文件中声明的类,从而使得我们在开发时候获得“代码分离”这种技术带给我们的方便和高效率。
“代码分离”在技术实现上其实就是使用了“继承”这样的技术,例如我们在普通的aspx页面中会经常看到以下的代码:
<%@ Page language="c#" Codebehind="jstest.aspx.cs" AutoEventWireup="false" Inherits="WebAppCSharp.jstest" %>
其中“Inherits”关键字就表明了该aspx页面继承了“jstest”这个类,而“Codebehind”关键字表明了该页面和“jstest.aspx.cs”这个cs文件是相关联的。这也就是为什么我们在ASP.NET应用程序中所有的控件在cs文件中的访问修饰符都声明为protected的原因了。当我们去访问一个aspx页面时,此时就会动态的产生这个aspx页面的新类(我们可以在framework文件夹下的Temporary ASP.NET Files中找到一个随机命名的cs文件,这个文件就是我们当前页面产生的新类,其中我们就可以看到如下代码:
public class jstest_aspx : WebAppCSharp.jstest, System.Web.SessionState.IRequiresSessionState
也就是说,当前的aspx页面继承了代码分离中的cs文件中声明的类,从而使得我们在开发时候获得“代码分离”这种技术带给我们的方便和高效率。