ASP.NET 4.0 一些隱性的擴充

來源:互聯網
上載者:User
文章目錄
  • PreApplicationStartMethodAttribute
  • BuildProvider.RegisterBuildProvider
  • BuildManager.AddReferencedAssembly
  • Config-free IHttpModule Registration

ASP.NET 4.0在很多方面都做了改進,在這篇ASP.NET 4.0白皮書就描述了很多ASP.NET 4.0的機制改變和改進。在我的部落格中,也有幾篇關於ASP.NET4.0的特性修改的文章。但是作為一個全新的架構和運行時,內部肯定還會有很多API和擴充點不會暴露的那麼明顯。比如今天從這篇文章Three Hidden Extensibility Gems in ASP.NET 4的介紹中,我又瞭解了一些在我平常開發中絕對非常有用的擴充點。

PreApplicationStartMethodAttribute

這個新的Attribute可以讓我們指定一個公用的靜態函數,讓它在網站的Application_Start之前執行該函數。如果你的網站有App_code目錄,這個函數同樣也會在App_code目錄下的代碼被編譯之前執行。從我的直覺中,這是一個相當有用的擴充點。

我們必須從assembly層級上來使用這個attribute,也就是通常情況下我們會用在AssemblyInfo.cs中:

[assembly: PreApplicationStartMethod(typeof(SomeClassLib.Initializer), "Initialize")]

我們需要指定的是類型和類型裡面靜態函數的名稱,這個靜態函數必須是不帶參數和傳回值的公用函數。

這個功能最重要的地方是在於,它可以做一些我們原來在Application_Start無法完成的事情,所以很多事情在執行到Application_Start時已經完成了,不可改變的,比如下面要介紹的關於編譯的擴充。

BuildProvider.RegisterBuildProvider

原來我們要註冊BuildProvider都是通過添加web.config的<buildproviders>來完成。在ASP.NET 4.0當中,我們就可以配合PreApplicationStartMethodAttribute,在網站啟動前添加自訂的來BuildProvider達到目的。

BuildManager.AddReferencedAssembly

在做.ASPX/.ASPCX和App_code目錄下的代碼檔案編譯時間,需要依賴一些程式集。以前,我們都需要將這些程式集配置在web.config的<assemblies>節點下來完成。現在,你就只需要配合以上的attribute和這個新的方法,直接通過代碼的形式來增加這些依賴。

Config-free IHttpModule Registration

這也是對PreApplicationStartMethodAttribute的一個絕對的妙用,在Nikhil Kothari的這篇文章中有詳細的介紹。它的主要目標,也是脫離Web.config就可以通過代碼來註冊IHttpModule。

總之雖然只是一個簡單的attribute,可是它卻非常的有用。當我們開發是一個可複用的架構時,我們不可避免的會需要在程式中做很多相關的配置才能讓程式跑起來。而以前,我們就只能要求使用者通過Web.config來完成,而當使用者少了一個配置就可能會導致整個架構無法運行。如果我們能將這些必須的配置,都在我們的架構內部來完成,這樣就可以大大降低架構的使用門檻。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.