繼前一篇 Windows Azure SDK v1.5 announced 文章,我們再介紹幾項 SDK v1.5 以及其他相關服務的新功能吧。
繼前一篇 Windows Azure SDK v1.5 announced 文章,我們再介紹幾項 SDK v1.5 以及其他相關服務的新功能吧。
1. 工具的改變
在 Windows Azure SDK v1.5 中,指令列工具有下列兩個部份的變化:
a. CSEncrypt.exe,這個工具會加密 VM 中的 Remote Desktop 所需要的使用者密碼,而它也可以一併建立 Remote Desktop 所需要的憑證,或由系統中由開發人員給定條件來搜尋現有憑證。不過憑證必須要上傳到所屬 VM 的服務憑證,否則無法通過 Remote Desktop 的認證。
b. CSUpload.exe 新增 Add-ServiceCertificate 方法,可直接上傳服務憑證。
而在模擬環境部份,Windows Azure SDK v1.5 的雲端模擬器有經過重新建構,以更貼近模擬環境和真實雲端環境,同時在部署時會顯示一個對話盒以告知目前進度。
2. 服務管理 API 的改變
服務管理 API 的部份有幾個具特色的改變:
a. API 支援撤消 (rollback) 功能,可允許開發人員透過 API 來撤消升級 (部署新的更新到目前線上的應用程式) 或變更 (對線上的應用程式的服務組態檔進行變更) 的工作,不過它可以撤消在 In-progress 的工作,對於已經完成的工作無法撤消,同時現階段它只能對有設定 RollbackAllowed=true 的應用程式執行。
b. API 支援多重指令觸發,以往 API 對特定觸發的工作有互斥的狀況,像 CreateDeployment, Upgrade, Change Configuration, Update Deployment Status, Delete Deployment 與前面的 Rollback 作業,只要其中一項正在執行且狀態在 in-progress 時,就不允許其他指令的呼叫,而在 v1.5 時,這個限制被放寬了,可允許管理應用程式觸發多個 write (對 VM 組態或狀態做變更) 的指令。
c. 擴充了針對 Role Instance 的狀態描述,包含 RoleStateUnknown, CreatingVM, StartingVM, CreatingRole, StartingRole, ReadyRole, BusyRole, StoppingRole, StoppingVM, DeletingVM, StoppedVM, RestartingRole, CyclingRole, FailedStartingVM 與 UnresponsiveRole。
d. 新增 GetSubscription 方法,以取得 subscription 的細部資訊。
3. Storage Services 的改變
在 SDK v1.5 中,對 Storage Services 的改變還真不少。
a. Table Upsert: Table Service 新增了 Upsert (增修) 的指令,讓開發人員可以減少至少一個 transaction 來進行資料的新增或更新,這兩個動作分別是 InsertOrReplace() 以及 InsertOrMerge() 方法,分別代表 "不是新增就是取代",或是 "不是新增就是合併" 的動作,這兩個方法都會用 PartitionKey 和 RowKey 當參數,不過唯一的差別是 InsertOrReplace() 用的是 HTTP PUT,而 InsertOrMerge() 用的是 HTTP MERGE。
b. Table Projection: 以往 Table Service 只支援取回全部資料的功能,所以不支援 LINQ 中的 select new 部份資料的語法,但在 v1.5 開始,Table Service 已可支援 projection 能力,所以 select new 的方法已可被 Table Service 所支援。
c. BLOB Service 加入額外的 HTTP 標頭 (x-ms-range 或 range 標頭),以支援更佳的下載體驗,包含串流應用程式與支援檔案續傳功能。
d. Queue 服務增加了 UpdateMessage() 方法以支援不用以重新將訊息排入佇列的方式來更新佇列中的訊息。
e. Queue 服務強化了 InsertMessage() 方法,加入可設定 Visibility Timeout 的功能。
4. Geo-replication 功能
Table 和 BLOB Service 開始支援異地備援功能,Geo-replication 會在資料進入儲存時,動態於資料中心內部與鄰近的資料中心間複製相同資料的副本,而當原本的資料中心突然因為某些因素中斷服務時,Windows Azure 的 DNS 服務會自動將 URL 要求導向到鄰近的資料中心,而由鄰近的資料中心提供服務,同時複製的作業是非同步進行的,不會影響到原本應用程式的運作,而 Geo-replication 所產生的儲存體交易以及網路頻寬均不需由使用者支付。
鄰近資料中心的對照表如下:
這個動作是預設啟用,使用者可以要求取消,不過要自行與 Windows Azure Support 申請,而且一旦取消,就等於放棄異地備援的能力。另外,Geo-replication 雖然會自動作異地備援,然而在備援時會有時間差,所以可能在時間差內的資料會因為來不及被複製而消失,但這總比所有的資料來消失要來的好。
Reference: