.Net 的代碼分離原理
來源:互聯網
上載者:User
“代碼分離”是一種為了更好的分離商業邏輯和美工頁面而設計的一種新的編譯模型,它本身和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檔案中聲明的類,從而使得我們在開發時候獲得“代碼分離”這種技術帶給我們的方便和高效率。