ASP.NET MVC 4 產品路線圖
2012/02/15 目前ASP.NET MVC 4 Beta已經出來,大家可以透過此頁面看整個ASP.NET MVC文章。
2011/09/18 ASP.NET MVC 4 Developer Preview釋出。
每次寫這類主題,都不免想要回憶一下,第一次看到Preview的ASP.NET MVC,已經不知道是多久之前了,當時的第一個感覺是,太棒了,ASP.NET終於也有MVC架構可以使用,隨著第一版正式發表,並很快的拿來實戰看看,清爽的程式架構,讓人覺得真的是太棒了!,到了2010年,隨著VS2010出現的ASP.NET MVC 2,並決定將此導入至公司,而後的ASP.NET MVC 3的Razor,更是讓人驚艷!,直到現在,ASP.NET MVC已經快要進入MVC 4了,不過好佳在,整體的架構並沒有多大的起伏,多半是功能更加強大,更方便讓人使用的改善,也讓我鬆了一口氣…,接下來,讓我們看看,ASP.NET MVC 4 整個產品路線會是怎樣規劃!!
- 開發與佈署:讓開發與佈署能更順利,而且更快,更好。
- 持續強化此平台:使用Razor和helper來持續強化ASP.NET MVC。
- 強化AJAX:持續改善與開發,無論是單一的AJAX應用程式,或是類似Gmail這種整頁式的應用程式。
- HTML5、平板、與手機裝置:讓整個ASP.NET MVC能簡單的建設,並且能輕鬆地轉移。
- 雲端,要能更快速和容易的放置於雲端,並且將重點放於性能、安全性與可擴充性。
當然,目前畢竟還未正式發佈,未來會變得怎樣,目前官方也還不能保證,但我們還是可以先來搶先看看,未來的ASP.NET MVC 4,有怎樣的改變。
Recipes食譜(配方!?)概念
這個概念是用於提升ASP.NET MVC的開發速度,想當初在導入時期,我最常聽到的抱怨是,如果ASP.NET MVC可以像ASP.NET有拖拉拖拉元件可用就好了,老實說,當初我也不知道該怎麼解釋,因為如在寫ASP.NET,我也比較習慣直接Coding程式碼,不過,我想針對許多的ASP.NET轉換到ASP.NET MVC的人,還是會很希望能有這些簡單的拖拉元件可用吧。( 之前聽到最多的抱怨是DataGrid… )。所以這次的更新,ASP.NET MVC團隊也聽到了XD!?,反正不管怎樣,有的時候要處理一些東西,的確是很麻煩的,所有這次多了一個叫做Recipes的概念(直接翻就叫做食譜或是配方,感覺好像在玩RPG…),他可以讓你從對話框中選擇你想要的Recipes,如下圖,而選擇好的東西,後段就會利用NuGet來將相關的程式碼與使用者介面等東西插入到適當的地方。
但還是要強調一點,MVC的架構與之前的ASP.NET是截然不同的,雖然會有更方便的東西可以讓大家使用,但我認為,還是必須去深入了解他的概念後,再利用這些工具快速地幫忙產生,是比較好的做法。 最後,微軟官方舉的這個例子是要建立一個Ajax grid,沒錯,建立Ajax grid需要做一堆的事情,從建立view code,HTML撰寫,資料的存取,控制器等等一堆東西。而如果利用Recipes,他就會幫你將以上的這些事情處理好。當然,你也可以自行撰寫一些食譜給大家使用,不過也還沒正式發佈,所以未來會怎樣實作,也有未知數,所以這裡先不提了。
手持裝置
現在的智慧型手機已經越來越多人使用,我想未來也即將進入移動網路時代,大家利用手機隨時隨地瀏覽網頁的頻率也越來越高,這時候,原本給PC用的網頁解析度,已經不符合手持裝置來使用了( 其實以前就已經有類似問題了… ),而因越來越多人使用,人多果然就是力量( 商機 ),所以ASP.NET MVC 4也考量到這一點,為了讓手機上的網頁顯示的更漂亮,更符合手機上的解析度,按鈕更加適合人手指的大小,所以ASP.NET MVC 4也提供了簡單、靈活的方式來支持行動裝置,如下圖。
ASP.NET MVC 4利用CSS和樣板的變更,來支援手機、平板等行動裝置的顯示,除了原來已經開發好的網站,可以用升級!?的方式來支援行動裝置外,也支援專門來開發手機的專案,這種專案,有別於原本的網頁專案,會將jQuery Mobile版本等符合手持裝置上的原件,預先幫你準備好,如下圖。
不過,我想應該很少會直接使用這個專案吧,不過也沒關係,原本的專案,還是可以去調整成手持裝置上使用,例如使用有mobile的檔案名稱等,來區分mobile,如下圖。
當然,建立Controller時的視窗,也會針對此mobile做調整。
最後,整個設計團隊,也希望能做到可以自由切換行動與桌面上,不過就如我一開始所講的,這些都還是ASP.NET MVC 4的產品路線圖,至於未來會怎樣呈現,能做到怎樣程度,還是要等到正式版本釋出才會知道。
Task支持AsyncController
原本在ASP.NET MVC 3裡面,要處理這些問題是件很麻煩的事情,如下:
public void IndexAsync(string city) { AsyncManager.OutstandingOperations.Increment(2); NewsService newsService = new NewsService(); newsService.GetHeadlinesCompleted += (sender, e) => { AsyncManager.Parameters["headlines"] = e.Value; AsyncManager.OutstandingOperations.Decrement(); }; newsService.GetHeadlinesAsync(); SportsService sportsService = new SportsService(); sportsService.GetScoresCompleted += (sender, e) => { AsyncManager.Parameters["scores"] = e.Value; AsyncManager.OutstandingOperations.Decrement(); }; sportsService.GetScoresAsync(); } public ActionResult IndexCompleted(string[] headlines, string[] scores, string[] forecast) { return View("Common", new PortalViewModel { NewsHeadlines = headlines, SportsScores = scores, }); }
但是ASP.NET MVC 4後,就可以很簡單的實現( 但需要配合Visual Studio Async CTP,或是未來的C# 5.0 )
public async Task<actionresult> Index(string city) { var newsService = new NewsService(); var sportsService = new SportsService(); return View("Common", new PortalViewModel { NewsHeadlines = await newsService.GetHeadlinesAsync(), SportsScores = await sportsService.GetScoresAsync() }); }
其他部分還有些像是Razor與ASP.NET的支援、CSS和Javascript的綁定、EF的Code First不會再覆蓋舊的資料、WCF API的支援、Ajax的改善、HTML 5的helpers、支持donut hole cache、更安全的AreaAttribute class等等,這些東西也會努力改善與實現。
最後,如一開始所說的,這些東西其實沒有很大的差異與變化,但是讓使用者更方便了,所以看到這篇文章的人也不用擔心,就算準備學習ASP.NET MVC 3的人也可以不用猶豫,可以放心的從ASP.NET MVC 3開始進入,我相信到時候,也可以順利的銜接,並且讓你更能感受到,哇~有ASP.NET MVC 4真好。
參考資料: http://haacked.com/archive/2011/07/13/asp-net-mvc-4-roadmap.aspx http://www.asp.net/mvc http://aspnet.codeplex.com/wikipage?title=ASP.NET%20MVC%204%20RoadMap