[Windows Azure] Windows Azure SDK for .NET 2.0 / Visual Studio Tools for Windows Azure 2.0

在兩天前,微軟正式發行了 Windows Azure SDK for .NET 2.0 以及所屬的 Visual Studio Tools for Windows Azure 2.0,這次的改進除了將新的服務加進來之外,最重要的雲端應用程式的診斷功能有了相當大的進步。

在兩天前,微軟正式發行了 Windows Azure SDK for .NET 2.0 以及所屬的 Visual Studio Tools for Windows Azure 2.0,這次的改進除了將新的服務加進來之外,最重要的雲端應用程式的診斷功能有了相當大的進步。

1. 針對網站服務的支援

Windows Azure Website Service 是微軟 Windows Azure Platform 上重要的服務之一,它簡化了 Web Application 發行到 Windows Azure 所需要的大量工作,它也提供了很方便的發行方法以及持續整合的作法,而這次的 Visual Studio Tools for Windows Azure 2.0 將原本的發行設定檔流程更簡化到只要在工具內操作就能輕鬆取得,不必再到管理介面去下載了。

image

在伺服器總管 (Server Exploere) 中,也加入了 Windows Azure Website 的項目:

image

在網站上按右鍵,我們可以執行下列工作:

image

檢視設定可以讓我們直接瀏覽與調整網站上的組態,包含重新啟動或停止網站等功能,大多數的設定都可以在這裡修改,而不必到管理介面去設定,不過目前尚未支援所有的組態,且 Scale 的功能也仍然要回管理介面才能修改:

image

我們也可以瀏覽記錄的功能,不過部份功能會帶到管理介面,例如設定記錄的功能。

image

其中有一個很特別的功能:串流記錄 (Streaming Logs),這是一個很方便的功能,我們可以直接在 Visual Studio 的輸出窗格中看到由網站所輸出的 Trace 訊息,啟用方法也很簡單,首先要設定應用程式記錄的類型:

image

然後在應用程式中下 Trace 指令,例如 (圖擷取自 ScottGu 的 blog):

image

然後在網站上按右鍵,選擇 "在輸出視窗中檢視串流記錄":

image

就可以在輸出視窗中看到了 (圖擷取自 ScottGu 的 blog):

image

我們也可以利用 azure command-line 工具來檢視 Streaming Log,可參考:http://www.hanselman.com/blog/StreamingDiagnosticsTraceLoggingFromTheAzureCommandLinePlusGlimpse.aspx

不過記錄的輸出會有時間差,而且必須要在網站帳戶中擁有 /LogFiles/Application 這個資料夾。

2. 針對雲端服務的支援

在 Cloud Service 上的新增功能有兩種,一種是增加新的 VM size,針對高記憶體量的 VM size,現在已可在 VM 大小清單中找到:

image

另外在發行的時候,我們可以選擇使用同時更新 (Simultaneous Update):

image

這個選項會讓 Windows Azure 捨棄原本的即地更新 (即累加式更新) 策略,而一次更新所有的 Instance,只是這會讓服務中斷一下,因此非不得己或能容許這種中斷時再考慮使用。

3. 診斷功能的強化

早期在處理 Cloud Service 的診斷功能時,我們只能使用程式碼在 OnRoleStart() 事件常式中增加 DiagnosticsMonitorConfiguration 並重設診斷組態的方式來設定診斷記錄的功能,到了 2.0 的時代,我們終於可以省掉這個麻煩。

image

對於早期的 Windows Azure 專案而言,我們要先做這一步,在設定區中的診斷設定才會啟用:

image

這個動作會在角色內加入一個 Diagnostics.wadcfg 檔案:


<?xml version="1.0" encoding="utf-8"?>
<DiagnosticMonitorConfiguration configurationChangePollInterval="PT1M" overallQuotaInMB="4096" xmlns="http://schemas.microsoft.com/ServiceHosting/2010/10/DiagnosticsConfiguration">
  <DiagnosticInfrastructureLogs />
  <Directories>
    <IISLogs container="wad-iis-logfiles" />
    <CrashDumps container="wad-crash-dumps" />
  </Directories>
  <Logs bufferQuotaInMB="1024" scheduledTransferPeriod="PT1M" scheduledTransferLogLevelFilter="Error" />
  <WindowsEventLog bufferQuotaInMB="1024" scheduledTransferPeriod="PT1M" scheduledTransferLogLevelFilter="Error">
    <DataSource name="Application!*" />
  </WindowsEventLog>
</DiagnosticMonitorConfiguration>

其實這就是預設的診斷資料檔,在 2.0 之前的版本都是由系統自行維護,而我們只能利用程式碼來修改它。不過現在我們可以很輕鬆的使用管理工具就能修改它:

image

目前大部份的記錄檔都可以使用這個作法來設定,但自訂格式的記錄檔 (Custom Logs) 仍然要以程式定義

另外,針對線上的 Cloud Service,我也可以利用伺服器總管中的 Windows Azure 計算 (Computes) 來更新其診斷資訊,其操作方法和在角色組態中相同。

image

我們也可以直接檢視線上的診斷記錄資料:

image

image

4. Storage

Visual Studio Tools for Windows Azure 2.0 在儲存區管理的更新,包含了允許直接編輯 Table Storage,例如直接新增一個表格:

image

image

在 Free Schema 的架構下,我們可以任意的新增或修改欄位,並且加入新的 Entity 或刪除現有的 Entity:

image

編輯器也十分直覺:

image

另外在右上方有個查詢產生器,我們可以利用它來產生查詢:

image

查詢的條件會自動帶到查詢文字框內。

5. Service Bus 的更新

針對 Service Bus,Windows Azure SDK for .NET 2.0 新增了部份功能:

  • 訊息瀏覽功能:它可以在不鎖住佇列的情況下允許開發人員瀏覽在佇列內的訊息。
  • 訊息幫浦程式開發模式:具備事件驅動式,或是 "Push" 方式的訊息傳遞模型。
  • 自動化刪除閒置訊息:允許設定一個週期,由系統利用這個週期以檢測是否有閒置太久的訊息,若有則自動刪除它。

6. PowerShell 的自動化

在 PowerShell 的 Windows Azure 模組中新增數個指令以支援新的或增強的服務,詳細清單可參考:https://github.com/WindowsAzure/azure-sdk-tools/blob/master/ChangeLog.txt

7. SDK 2.0 帶來的數個服務變化

  • Microsoft.WindowsAzure.Diagnostics.dll 已完成改寫,不再需要 Storage Client 1.0,而可直接使用 Storage Client 2.0 來處理診斷資訊,它也可以由 NuGet 來取得。
  • Windows Azure SDK 2.0 不再支援與 1.6 或更早版本的 Side-by-side。
  • Windows Azure SDK 2.0 內的主要組件均已使用 .NET Framework 4.0 改寫,不再需要依賴 .NET Framework 3.5,這也表示說之前的 .NET Framework 版本設定若仍為 3.5,要記得改為 4.0 或 4.5。
  • 微軟公布了針對雲端服務的生命週期資訊,可參考:http://support.microsoft.com/gp/azure-cloud-lifecycle-faq
  • 自 2010 年 10 月份就開放的 VM Role 以及 Windows Azure Connect 即將分別在 2013/5/15 以及 2013/6/30 和大家說再見,使用這些服務的專案或系統請將自己的服務移轉到 Windows Azure Virtual Machine 以及 Windows Azure Virtual Network。
  • Web Role 的始祖 HWC (Hosted Web Component) 可能即將要說再見了,因為 2.0 開始強制要求 Web Role 上的網站宣告必須符合 Full IIS 的格式規範,這也表示說自 2.0 開始只會有 Full IIS 模式,而不會再有 HWC 模式。
  • 使用 CSUpload.exe 時會出現警告訊息,提醒此功能未來會由 PowerShell 的指令取代。

 

Reference: