ASP.NET MVC - ASP.NET MVC 4 Recipes、Task支援Async Controller

22 September 2011 — Written by Sky Chang
#ASP.NET MVC

2012/02/25更新

終於到了ASP.NET MVC 4 的最終章,而剩下的一點點東西,就會在這篇介紹完畢,最後剩下的新功能,大概就是Recipes和Asynchronous Controllers這兩樣,其實這兩樣東西在路線圖就已經有介紹過了,而這些東西,這次官網也沒有真的公布許多東西,所以我就稍微針對官網的敘述,做一個解釋。

Recipes

這個新功能,可以讓你在Visual Studio裡面擁有完整的解決方案,就像之前所提到的,利用NuGet來安裝jQuery Mobile,來取得完整的Mobile裝置環境,而這次官方也提供Recipes Framework來給使用者開發使用,來製作方便好用的Package,並且使用此功能,也可以讓你去新增或是處理Area、Controller、View等檔案,而且配合NuGet的更新能力,更讓整個機制更加的完整而且方便。

Task 正式支援 Asynchronous Controllers

Asynchronous Controllers的Return可以返回Task了;如以下範例,以下範例使用了C# 5.0 (or 使用了AsynC CTP )。

public async Task Index(string city) {
    var newsService = new NewsService();
    var sportsService = new SportsService();

    return View("Common",
        new PortalViewModel {
        NewsHeadlines = await newsService.GetHeadlinesAsync(),
        SportsScores = await sportsService.GetScoresAsync()
    });
}

第二個範例,我們可以設定TimeOut的時間。

[AsyncTimeout(2500)]
 [HandleError(ExceptionType = typeof(TaskCanceledException), View = "TimedOut")]
public async Task Index(string city,
    CancellationToken cancellationToken) {
    var newsService = new NewsService();
    var sportsService = new SportsService();

    return View("Common",
        new PortalViewModel {
        NewsHeadlines = await newsService.GetHeadlinesAsync(cancellationToken),
        SportsScores = await sportsService.GetScoresAsync(cancellationToken)
    });
}

原則上就是這樣,其中有一些issues的部分,因為會一直去做修正,所以就不在這裡講了,有興趣的可以直接去參考相關網站。

參考資料

  1. http://www.asp.net/learn/whitepapers/mvc4-release-notes
Sky & Study4.TW