為什麼 ASP.NET 開發人員要瞭解 Azure 行動服務?

原文發表於 Azure Mobile Services: why should ASP.NET developers care?

Mobile Services for Web API Devs

Azure 行動服務為行動應用程式開發人員提供了以雲平台為基礎的後端解決方案,現在這項服務除了可以使用 JavaScript (Node.js) 來客製化後端平台之外,也支援了使用 ASP.NET Web API 的技術來客製後端平台的運算邏輯,所以對於要開發給行動裝置應用程式 API 的 ASP.NET 開發人員來說,Azure 行動服務是相當有吸引力的:

  • 適用於所有行動平台的完整後端平台以及 SDK 解決方案 。透過 Azure 行動服務,您可以迅速地為您的 iOS, Android, Windows, Windows Phone 或是 HTML app 加上一個有豐富功能的後端平台,即使是使用像是 Xamarin, Sencha 或 PhoneGap 這些跨行動裝置平台的開發套件也適用。我們同時為這些平台分別提供了 SDK,讓您在開發整合上更加方便。
  • 您 Mobile API 的最佳託管平台 。雖然 Azure 行動服務本身就提供了 Web API 供行動應用程式界接,您仍然可以部署 Web API 控制器到 Azure 行動服務上做客製化,相對其它的託管服務,Azure 行動服務可以協助您監控及管理您自行部署的 Web API 控制器,如果 Web API 的執行環境發生了任何問題,我們也會自行修補或更新,除非是您的控制器程式發生問題,我們才會聯絡您。
  • 優質且多功能的行動後端平台 。Azure 行動服務提供了許多立即可用的功能,您可以輕易地與 Web API 結合,像是使用 SignalR 即時發出推播通知(push notification)使用社交網路的機制做身份驗證同步離線資料等等。
  • 與企業系統結合 。如果您是企業中的開發人員,Azure 行動服務也讓您可以使用 Active Directory 做身份驗證、透過 API 存取 SharePointOffice 365 的資料。除此之外,我們也提供了無縫整合的機制 (connectivity to on-premises assets), 即使企業內部的系統或資料庫沒有直接曝露在 Internet 之下,您依然可以在 Azure 行動服務上連結它們。
  • 與 Visual Studio 整合 。現在您可以直接在您最愛的 IDE 中直接操作及開發 Azure 行動服務相關的專案,Visual Studio 同時也是 Azure 行動服務最佳的開發、偵錯及發佈的工具。

適用於所有行動平台的完整後端平台以及 SDK 解決方案

開始使用 Azure 行動服務是很容易的,只要在 Azure 管理後台上建立一個新的行動服務,並且在第一個畫面記得在 BACKEND 欄位選擇「.NET」。一旦行動服務建立完成後,您可以到 Quickstart 的頁面,根據您要開發的行動平台下載一個起始專案來開發。

如果您比較喜歡從 Visual Studio 開始,那也可以在新增一個新的 ASP.NET 專案時,選擇新增 Azure Mobile Service 專案範本,稍後再將它直接發佈到 Azure 上。請注意:這項功能是在 Visual Studio 2013 Update 2 之後新增的

不論用哪一種方式,都會拿到一個 Mobile Service .NET 的專案範本,同時您也可以發現它其實是一個簡單的 Web API 專案(加上一些 NuGet 套件)。

您可以打開 TodoItemController.cs 這個檔案,在 GetAllTodoitems() 處設定中斷點,這個控制器的程式碼也展示了要如何操作 Azure 行動服務上的資料:

 public class TodoItemController : TableController
{
    protected override void Initialize(HttpControllerContext controllerContext)
    {
        base.Initialize(controllerContext);
        csharp_testContext context = new csharp_testContext();
        DomainManager = new EntityDomainManager(context, Request, Services);
    }

    // GET tables/TodoItem
    public IQueryable GetAllTodoItems()
    {
        return Query();
    }

    // GET tables/TodoItem/48D68C86-6EA6-4C25-AA33-223FC9A27959
    public SingleResult GetTodoItem(string id)
    {
        return Lookup(id);
    }

    // PATCH tables/TodoItem/48D68C86-6EA6-4C25-AA33-223FC9A27959
    public Task PatchTodoItem(string id, Delta patch)
    {
        return UpdateAsync(id, patch);
    }

    // POST tables/TodoItem/48D68C86-6EA6-4C25-AA33-223FC9A27959
    public async Task PostTodoItem(TodoItem item)
    {
        TodoItem current = await InsertAsync(item);
        return CreatedAtRoute("Tables", new { id = current.Id }, current);
    }

    // DELETE tables/TodoItem/48D68C86-6EA6-4C25-AA33-223FC9A27959
    public Task DeleteTodoItem(string id)
    {
        return DeleteAsync(id);
    }
}

您可以看到這裡我們產生了所有的 CRUD 方法來處理 TodoItem,同時這個控制器使用了 EntityDomainManager,它為 Entity Framework 模型包裝了一層,讓您可以很容易地選擇不同的資料來源,像是:

  • MongoDB: 透過 NuGet 套件管理工具可以安裝使用 MongoDomainManager。詳情可參考這篇文章
  • Azure Table Storage: 透過 NuGet 套件管理工具可以安裝使用 StorageDomainManager。詳情可參考這篇文章

現在 Azure 行動服務支援您可以在本地端進行偵錯(按 F5 執行),啟動的頁面將可以幫助您瞭解 Web API 送出的資料是否正確。按下頁面中的 GET tables/TodoItem 就可以開始進行測試;按下「try this out」的連結,並按下 send,就會觸發程式中的 GetAllTodoItems() 方法,由於剛才已經設定過中斷點,所以就可以在 IDE 裡進行偵錯。

當您完成了 API 的開發,您可以立即從 Visual Studio 中將專案按右鍵發行至 Azure,而不必另外打開 Azure 管理介面來操作。

一旦完成發行,Azure 行動服務便會立刻將您開發的 Web API 上線,同時進行監控。

想要瞭解更多關於 Azure 行動服務的 .NET 支援,可以參考下列文章:

您 Mobile API 的最佳託管平台

如果您是一個有經驗的 Web API 開發人員,您也許會想瞭解把 Web API 服務放上 Azure 行動服務有什麼好處?下面舉出了一些好處:

  • 監控 (monitoring) 及診斷 (diagnostics) 。Azure 行動服務提供了 SLA 99.9 的服務水準,並且透過內建的監控機制來確保您服務的穩定。如果是付費用戶,我們更會嚴密監控 HTTP 流量及 SQL 的連結,一旦有問題時便會與您聯絡。除此之外,我們也提供了許多自助監控的機制,像是服務端點監控以及警示功能。
  • 自動更新。我們平均每週都會更新或修補錯誤我們的伺服器平台,而更新的過程不會讓您停止服務或是需要重新部署應用程式。當然,我們會確保更新後的相容性,所有的更新都會向後相容(backward-compatible)。
  • 自動部署雲端服務。當您建立一個 Azure 行動服務時,我們也會自動設定 SQL 資料庫以及通知中樞(notification hub, 為了做推播通知),並且正確地連結好。同樣地,您也可以在管理後台上輕易地設定好與既有機房的連結,達到混合雲的使用情境。Azure 服務提供您公有雲的方便之外,也提供了與既有機房連結的彈性。

優質且多功能的行動後端平台

當您開時使用 Azure 行動服務打造應用程式時,您會發現 Azure 行動服務提供了許多有用的功能,這些功能可以為您省下好幾個禮拜的開發時間。

  • 統包的身份驗證方案。許多行動裝置應用程式都會有身份驗證的使用情境,Azure 行動服務已做好像是 Microsoft Account, Facebook, Twitter, Google 以及企業用的 AAD 身份驗證機制,您只需要透過 Azure 行動服務的 SDK/API 呼叫就能完成身份驗證的工作,而不必真的成為 OAuth 專家。詳情可以參考這份教學文件
  • 可延展的推播通知。有一些行動裝置應用程式有使用推播通知的情境,Azure 行動服務已經做好 Windows, iOS, Android 以及 Kindle 的推播機制,您可以只透過一套 Azure 行動服務的 API 便能完成全平台的推播通知機制,當然您也可以完全客製化推播通知的內容,這份文件可以讓您瞭解如何使用 Azure 行動服務的推播通知功能。
  • 同步離線資料。許多用戶希望在行動裝置離線時也能繼續使用,而 Azure 行動服務的 SDK 也提供了類似 SQLite 的離線資料庫機制,待裝置再度連上線後進行同步。詳情可參考這份文件
  • 即時。推播通知是一個與客戶接觸的好工具,但這使得您必須提供可延展且低延遲的網路環境,Azure 行動服務支援以 WebSocket, SignalR 為基礎的即時雙向通訊機制,使您的應用程式能更即時地傳送或接收訊息。而這一切都建構在 Azure 上可無縫延展的基礎架構上,同時也可以輕易地做身份驗證。更多的訊息請參考這篇文章

與企業系統結合

在企業系統的開發上,.NET 是很常見的開發平台,所以在 Azure 行動服務支援 .NET 程式語言後就有更多與企業系統結合的機會,您可以參考這一頁的資訊,看到更多的展示。

  • Active Directory 整合。在企業應用中,常會使用 Active Directory 來做身份驗證的機制,Azure 行動服務支援 AD 的登入機制後,也可以存取原本用 AD 做身份驗證的 SharePoint 以及 Office 365,更適合做企業的行動應用程式開發。更多 AD 整合的資訊請參考這份教學文件,而這部影片說明了如何設定 on-behalf-of 的機制。
  • 與既有機房連結。有時候企業的系統或資料庫並沒有曝露在 Internet 的環境下,Azure 行動服務依然支援設定與既有機房連結的機制,創造出「混合連結」的架構。可參考這部影片以及這份教學文件來進行設定。
  • Xamarin SDK。許多企業會選擇使用 Xamarin 的技術來開發多平台的行動裝置應用程式,Azure 行動服務也提供了 Xamarin SDK 讓以 Xamarin 開發應用程式的開發人員也能輕易使用 Azure 行動服務的功能。
  • 加速器。Azure 行動服務團隊針對特定產業的應用開發了一些範例,以加速特定產業的行動應用開發。這些加速器可在此下載

與 Visual Studio 整合

除了上述的功能之外,與 Visual Studio 開發工具的整合也是相當重要的,除了可以直接開發、偵錯及發行之外,您也可以在 Visual Studio 中產生像是表格控制器、自訂控制器或是排程工作等程式範本。

同時我們也整合了遠端偵錯的功能,您只要在伺服器總管(Server Explorer) 上連結到對應的 Azure 行動服務,按右鍵選擇「連結偵錯工具(Attach Debugger)」,這樣就可以直接在 Visual Studio 中進行偵錯已發行至 Azure 行動服務的程式碼(要是 Debug 編譯)。

另一個很棒的功能是,您可以在伺服器總管(Server Explorer) 上使用「檢視記錄(View Logs)」的功能看到 Azure 行動服務上的所有 log,也包含錯誤訊息堆疊等。

我們衷心地希望這些新功能會吸引您在下一個專案來試用 Azure 行動服務。如果您有任何意見或是建議,歡迎透過 Twitter 連絡 @theYavor

這篇文章原始發佈於「Microsoft Azure 中文部落格」