ASP.NET 4.0 一些隱性的擴充套件
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中:
1 | [assembly: PreApplicationStartMethod( |
2 | typeof(SomeClassLib.Initializer), "Initialize")] |
我們需要指定的是型別和型別裡面靜態函式的名稱,這個靜態函式必須是不帶引數和返回值的公共函式。
這個功能最重要的地方是在於,它可以做一些我們原來在Application_Start無法完成的事情,所以很多事情在執行到Application_Start時已經完成了,不可改變的,比如下面要介紹的關於編譯的擴充套件。
BuildProvider.RegisterBuildProvider
原來我們要註冊BuildProvider都是通過新增web.config的
BuildManager.AddReferencedAssembly
在做.ASPX/.ASPCX和App_code目錄下的程式碼檔案編譯時,需要依賴一些程式集。以前,我們都需要將這些程式集配置在web.config的
Config-free IHttpModule Registration
這也是對PreApplicationStartMethodAttribute的一個絕對的妙用,在Nikhil Kothari的這篇文章中有詳細的介紹。它的主要目標,也是脫離Web.config就可以通過程式碼來註冊IHttpModule。
總之雖然只是一個簡單的attribute,可是它卻非常的有用。當我們開發是一個可複用的框架時,我們不可避免的會需要在程式中做很多相關的配置才能讓程式跑起來。而以前,我們就只能要求使用者通過Web.config來完成,而當使用者少了一個配置就可能會導致整個框架無法執行。如果我們能將這些必須的配置,都在我們的框架內部來完成,這樣就可以大大降低框架的使用門檻。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-671640/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- kotlin 擴充套件(擴充套件函式和擴充套件屬性)Kotlin套件函式
- ASP.NET Core擴充套件庫之Http通用擴充套件ASP.NET套件HTTP
- 可擴充套件性套件
- 【Kotlin】擴充套件屬性、擴充套件函式Kotlin套件函式
- Sentinel 的一些小擴充套件套件
- 服務的擴充套件性套件
- bash的特有擴充套件屬性套件
- Swift 擴充套件 Storyboard 屬性Swift套件
- 分享一些好用的 Chrome 擴充套件Chrome套件
- MySQL - 擴充套件性 2 擴充套件策略:氪金氪腦任君選MySql套件
- 可擴充套件性筆記一套件筆記
- ASP.NET Core擴充套件庫之日誌ASP.NET套件
- ASP.NET 頁面aspx之擴充套件ASP.NET套件
- ETL的可擴充套件性和可維護性套件
- [譯] 論資料流的擴充套件性套件
- 高擴充套件性的學習路線套件
- ASP.NET擴充套件庫之Http日誌ASP.NET套件HTTP
- 詳解ASP.NET頁面的aspx擴充套件ASP.NET套件
- Swift快速為類擴充套件屬性Swift套件
- WCF擴充套件:行為擴充套件Behavior Extension套件
- COLA的擴充套件性使用和原始碼研究套件原始碼
- 寫擴充套件性好的程式碼:函式套件函式
- 一鍵隱藏所有固定的瀏覽器擴充套件瀏覽器套件
- ?用Chrome擴充套件管理器, 管理你的擴充套件Chrome套件
- macOS 探尋檔案擴充套件屬性Mac套件
- 如何構建高擴充套件性網站?套件網站
- Sanic 擴充套件套件
- ORACLE 擴充套件Oracle套件
- 擴充套件工具套件
- 擴充套件歐幾里得套件
- DOM擴充套件套件
- 擴充套件ACL套件
- Lua擴充套件套件
- 照片擴充套件套件
- 擴充套件篇套件
- disable or 擴充套件套件
- 擴充套件表套件
- Mybatis擴充套件MyBatis套件