ASP.NET 4.0 一些隱性的擴展

作者: 阿不  來源: 博客園  發布時間: 2010-08-22 21:06  閱讀: 2351 次  推薦: 0   原文鏈接   [收藏]  
摘要: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中:

 
[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來完成,而當用戶少了一個配置就可能會導致整個框架無法運行。如果我們能將這些必須的配置,都在我們的框架內部來完成,這樣就可以大大降低框架的使用門檻。

0
0
 
標簽:ASP.NET 擴展
 
 

文章列表

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()