選擇ASP.NET代碼編寫策略

來源:互聯網
上載者:User
asp.net|策略 開發社區包括.NET Framework的內容,其中最有特色的是ASP.NET的Web開發。然而,這裡也包含大量的有關legacy ASP代碼及其開發人員的討論。



很多ASP開發人員並非真正經過培訓的開發人員,他們往往只是HTML代碼編寫者,他們處理的ASP模型很不合理。這些開發人員通常只知道將他們的ASP常規思維應用到ASP.NET環境中,而這個過程他們卻不知做出相應的選擇。



以往的缺點
我特別喜歡ASP.NET所具有的穩定性,尤其是當我在ASP開發過程處於迷惑不解的時候。我的迷惑不解來自ASP的本質,即所有操作都集中在同一個bucket,也就是說,一個ASP頁既包含原始碼,也包含HTML。在一個Web頁中放置java script也是類似的,這通常稱為內聯(inline),但開發人員通常將其稱為意大利麵程式碼(spaghetti code).

在一個開發項目中,計劃和開發過程的結合沒有很好地與專案工作匹配,而出現這種情況通常為Web使用者介面設計者和程式開發人員。允許Web開發人員查看ASP代碼往往使得程式開發人員感到不安,並且使Web開發人員感到迷亂。一個比較可行的方法是將設計過程分離化。



分離並改進
當提及.NET的優點時,微軟都會吹噓物件導向程式開發(OOP),而OOP特點在ASP.NET中更為顯著。它通過一個背後代碼檔案(codebehind file)的方式允許原始碼從Web markup分離開來。Web markup儲存在一個.aspx檔案中,並且原始碼(VB.NET,C#等)存放在一個附帶的代碼檔案中。Codebehind檔案名稱取決於使用的開發語言,但如果我們利用VB.NET來建立一個名為TestPage的ASP.NET頁,以下的檔案名稱是合法的:

TestPage.aspx:Web markup,java script等。
TestPage.aspx.vb:包含VB.NET原始碼的檔案。


如果選用的是C#.NET語言,Codebehind檔案將被稱為TestPage.aspx.cs。Codebehind檔案包含的類是來源於位於System.UI.Web空間名稱的Page類。Codebehind檔案與@Page標誌的aspx檔案及其附帶檔案Inherits屬性進行連結。Inherits屬性指向Codebehind檔案和類的名稱,而這一指向不需要檔案擴充。

<%@ Page language="c#" Inherits="TestPage" %>



語言的特性表示了頁面的語言──並不是Codebehind。頁面可以通過內聯(inline)代碼使用一種語言和在Codebehind檔案中使用的另一種語言。Inherits屬性指定了頁面的基本類(Codebehind類)。

在預設情況下,Codebehind檔案使用Page類作為其基本類,但也可以使用普通的類。這就提供了建立程式的主控頁面(master pages)的可能性。



以Visual Studio .NET方式處理
使用Codebehind檔案是Visual Studio .NET開發環境中的預設特性。例如,在ASP.NET頁中建立的@Page標誌具有以下的文法:

<%@ Page language="c#" Codebehind="TestPage.aspx.cs"
AutoEventWireup="false" Inherits="TestPage" %>



以上程式碼封裝含兩個額外的特性:

Codebehind屬性指向頁面的codebehind檔案。這一屬性只適用於Visual Studio .NET。

AutoEventWireup屬性工作表示標準事件是否自動地串連到代碼中的任意控制代碼。Visual Studio .NET在處理事件建立時將這一屬性設定為false。



Visual Studio .NET將codebehind檔案編譯成為一個可執行檔,這一可執行檔可使用於Web程式的bin目錄中。這就加快了頁面的載入,因為當網頁首次被請求時無需再被編譯。另一方面,一旦第一個用戶端請示時,內聯(inline)代碼即被編譯。



做出你自己的選擇
OOP文法是分離原始碼和使用者介面部分的支撐者,但這也並非意味著它能適用於所有情況。分離方法依賴於不同因素(包括開發時間和專業技術),但擁有所有可能的知識可以更容易地做出決定。自從引入ASP.NET的介紹之後,關於內聯(inline)和背後代碼(codebehind)的話題一直處於激烈的討論中。


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.