利用 Web Deploy 加速 Windows Azure 的開發測試

* 適用環境: Visual Studio 2010, Windows Azure SDK 1.4.1 Refresh (建議經由 Web Platform Installer 3.0 安裝, 不必記 URL)

Windows Azure 雖然有提供開發測試環境 (DevFabric), 但由於它是裝在開發者的機器上, 通常僅能用來作為開發期間的單元測試之用, 遇到多人開發時的整合測試, 還是得回到 Windows Azure 上開一個測試的 Hosted Service, 將程式佈署到 Windows Azure 上以進行測試。但是 Windows Azure 的佈署流程總是會需要重新啟進一個全新的虛擬機器 , 以至於每回的上傳總是要佔去不少時間。大約要半柱香的時間, 有總時光倒流回 20 年前在大型主機上寫程式的錯覺。

今年的 MIX 2011, Windows Azure SDK 微幅更新到 1.4.1 Refresh (目前官網上的部份連結仍然是舊的, 建議安裝 Web Platform Installer 3.0 之後, 再搜尋 Azure 關鍵字即可找到最新的版本), 主要是增加 Web Deploy 的功能。Web Deploy 是Visual Studio 內建的功能, 主要工作是將 Web Application 整個打包後發佈到 IIS 上, 以取代 FTP 等舊式各別檔案的上傳。

Web Deploy 與 Windows Azure 的打包機制最大的不同, 是 Web Deploy 只能針對 WebRole 打包, 並且是直接上傳到正在運行中 VM 的 IIS 上, 可以藉此加速修改 Azure 網頁程式上傳後重新啟動的時間, 但也有一些限制:

  • WebDeploy 只能針對單一個 Instance 上傳檔案, 目前無法自動佈署到多個 Instance 上
  • Webdeploy 必須上傳到正在運作中的 IIS 上, 第一次仍然必須使用 Windows Azure 標準的佈署方式, 以啟動第一個環境。
  • WebDeploy 跳過了 Windows Azure 標準佈署過程, 直接把程式佈署到運作中的環境上, 所以當系統重動啟動 (Stop 之後再 Restart), 線上的系統立刻還原到第一次佈署的初始狀態。
  • WebDeploy 只適合用作開發期間的測試之用, 真正上線服務的網站, 還是必需使用 Windows Azure 標準的方式。

不同的佈署步驟:

1. 安裝 Windows Azure SDK 1.4.1 Refresh 及 Windows Azure Tools for Microsoft Visual Studio 2010 Platform v1.4 之後, 部署網站時會多一個 Enable Web Deploy 的選項, 開啟這個選項之前, 必須先設定 Remote Desktop 所需的主機管理員帳號憑證, 沒有設定 Remote Desktop 主機管理員帳號憑證之前, 這個選項是變灰而不能選的。

image

2. 第二次之後就可以直接使用 Web Deploy 來部署, 要注意這裡使用的是 WebRole 的 Publish (Web Project 按右鍵), 而不是平常的 Windows Azure Project Publish (Azure Project 按右鍵)

image