本文章是由機器翻譯。

雲朵計算

高可用性、 延展性,及電腦與 Windows Azure 的電源模式

Joshy Joseph

可從 MSDN 程式庫 的程式碼下載
瀏覽線上的程式碼

本文根據搶鮮版的 Windows Azure。 詳細資料如有變更。

本文將告訴您:

  • 雲朵電腦架構
  • Windows Azure
  • 定域機組的模式和最佳作法
本文將使用下列技術:
Windows Azure

內容

雲朵計算
Windows Azure 實作
定域機組應用程式類型與模式
Real-World 範例
應用程式設計和程式開發
部署服務
系統管理
結論

在最後的十年 ,decoupling 介面實作,可擴充裝載模型、 服務導向、 訂閱型計算,和增加的社交協同作業成為分散式系統的目標。 現在,網際網路的主控散佈應用程式連線至內部應用程式 (通常稱為軟體 」 以及 「 服務 」 (S + S) — 取得普及。 組織會使用協力廠商,以減輕有關硬體、 軟體、 可靠性和延展性的問題所裝載的資料中心。 這些都只是一些新架構的趨勢,可協助您會建置互通性的應用程式延展性、 降低資本支出,並改善可靠性。 計算提供雲朵許多這些優點。

定域機組運算平台中,可讓裝載的可存取網際網路的虛擬環境中提供必要的硬體、 軟體、 網路,以及儲存容量,並提供安全性] 和 [移除大部分的購買和維護硬體和軟體的公司內部的負擔的可靠性的應用程式。 在的 Cloud 中的,您可以開發、 部署,和管理應用程式,當您在過去,和您的內部應用程式中整合這些服務。 您只適用於時間,資源,並且需要您使用時調整設定,來適應變更的商務的容量。

在這的篇文章我將檢查 My.Application.UICulture 一般的定域機組的平台架構和某些常見之架構的模式,一起上,從 Microsoft 所提供的 Windows Azure 實作。

雲朵計算

[圖 1] 說明在一般的定域機組運算平台 」 架構。

[圖 1 分層架構的雲霧平台(按一下影像以較大的檢視)

在這個模型,每一個層級區隔它公開介面上面的圖層會建置在下面圖層。 層之間沒有沒有硬式相依性,而且每一層提供 composable 或隨插即用服務從其他階層架構。 每一層提供需要水平延展性。

您可以看到在定域機組的平台被組成數子系統中。 讓我們來看看每一個接下來。

裝載平台,裝載的平台,提供實體虛擬和軟體資產。 這些資產會包括實體機器、 作業系統、 網路系統、 儲存系統、 電源管理和虛擬化軟體。 Bare 金屬] 和 [其他操作的資源會抽象化到上面的圖層的虛擬資源。

定域機組的基礎結構服務,最重要的功能,此層的是抽象,裝載的平台為一組虛擬資源,並管理根據延展性和可用性的這些資源需要。 基本上,這一層會提供抽象資源的三種: 儲存,] 及 [網路,計算,並將公開一組 API 來存取和管理這些資源的抽象概念。 因此,您不知道基礎的硬體和軟體的詳細資料存取基礎的實體資源,並可以控制這些系統,有效率地透過組態。 這個子系統所提供的服務通常稱為基礎結構服務 (IaaS)。

定域機組平台服務開發和管理軟體的雲朵複雜的計算。 前提的軟體整合裝載服務時它會變成真正複雜。 平台服務將提供您,公開 (Expose) 為服務的功能,以協助這種整合的一組。 例如,Azure 服務平台,Microsoft.NET 服務匯流排幫助探索與存取而角色和規則為基礎的宣告轉換和對應,可以協助 Microsoft.NET 的存取控制服務。 平台服務的可用性可能會區別一個定域機組的提供者。 這層所提供服務被指為服務 (PaaS) 的平台。

這一層包含建立的應用程式的定域機組應用程式會雲朵計算。 這些應用程式會公開 Web 介面 」 和 「 一般使用者啟用 multitenant 裝載模型的 Web 服務。 有些函式會包括連接不同的系統,以及運用定域機組儲存基礎結構儲存文件。 這些服務會為服務 (SaaS) 底下 「 傘的軟體。

安全性服務的安全性服務,請確定語彙基元提供,身分識別結盟,] 和 [宣告轉換。 這些服務建立在開放標準,WS-Security WS-Trust WS-聯盟 」、 「 SAML 的通訊協定及 「 OpenID,更高的互通性。

剪下,在上述的所有層級的管理服務管理介面。 在主控的平台上會利用管理介面和自動化的延展性和可用性管理的代理程式。 即使定域機組是裝載,而且在 DataCenter 中管理,客戶可能會需要函式,讓他們輕鬆地控制其應用程式部署組態、 取得 Analytics 有關服務的使用量,和 Post 連接其企業管理系統。

工具工具可協助您建置,測試,並部署至定域機組的應用程式。 這些工具可能會擴充現有的工具 (Visual Studio Tools for Windows Azure,執行個體) 或裝載工具,從特定的定域機組的提供者。

使用者和提供者的雲朵的運算有三種類別中的使用者的雲朵運算: 定域機組的平台提供者,定域機組的消費者和使用者。 定域機組的平台提供者會提供裝載的平台,並且雲朵基礎結構服務。 定域機組的消費者會利用在定域機組的平台,以及開發應用程式和服務,要由使用者使用。 定域機組的消費者會設定應用程式的延展性、 可用性和安全性需求。 使用者會利用定域機組的消費者所提供的服務。 這些使用者可能人、 組織或電腦,而可能可裝載任何地方。

在此內容中中, Azure 會提供定域機組的平台而定域機組的消費者 (或整合式的 ISV 建置定域機組的解決方案或企業) 使用此平台來建置應用程式)。 例如 Live 網狀結構資料的同步處理平台,運用開發和裝載 S + S 服務使用者的 Windows Azure 與 Azure Services 平台。

[圖 2] 會將 Azure 服務平台對應至 [圖 1 ] 中的分層架構中。 這個平台會提供服務的一組,應用程式開發人員。 定域機組中執行的應用程式和本機系統上執行應用程式,可以使用這些服務。 Windows Azure,the 的雲的作業系統是在基礎的 Microsoft 的定域機組平台提供。 如 [圖 2 ] 所示,則 Azure 服務平台會提供共用服務的一組: SQL 資料服務、.NET 服務和 Live 服務,可用於個別或共同。 此外,Microsoft 會提供各種完成定域機組應用程式 (包括 Exchange 線上 」、 「 線上,SharePoint 和 「 線上的 CRM。 這裡的但是,我將著重只有 Windows Azure 作業系統和相關的模式。

[圖 2 Azure 服務平台,對應至分層架構

Windows Azure 實作

Windows Azure 提供視計算和儲存功能控管、 縮放,與管理 Web 應用程式,並裝載在 Microsoft 資料中心的網際網路上的服務]。

Windows Azure 提供功能的服務需要的定域機組的該消費者。 例如,實體的硬體資源離開抽取並且公開為計算準備好要由定域機組的應用程式使用的資源。 儲存資源的抽象化並透過明確定義的儲存介面公開實體存放區。 一般的 Windows 結構會區隔實體的硬體和軟體平台,並公開虛擬化的計算和儲存的資源。 此外,應用程式的每個執行個體是監視的可用性和延展性,並自動管理。 舉例來說,如果在執行個體應用程式當機時,請光纖控制器 (如 [圖 3 ] 所示) 將會收到通知,並在另一個虛擬機器 (VM) 另一個執行個體具使用者的影響有限。 因為的虛擬化撰寫程式碼時數量,您需要確定您沒有進行任何假設電腦主控您的應用程式的狀態。 在 Windows Azure 無法輕易地服務移至新的 VM。 Windows Azure 會遵循是模型驅動服務管理] 設計,含有 Azure 光纖控制站負責對應可用的資源的宣告式服務規格與管理服務的週期。

[圖 3 Windows Azure 和角色

依預設大多數開發.NET 應用程式無法裝載在 Azure 部分信任的模型、 資料儲存 / 存取和應用程式之間的通訊某些特定限制。 豐富的開發人員 SDK 和程式設計工具 [說明] 您取得導向此平台。

現在您可以建立.NET 應用程式、 ASP.NET 的應用程式和 WCF 基礎 Web 服務使用 Visual Studio 中支援的工具滑鼠右鍵。

Windows Azure 目前提供兩種處理方法 Web 的角色和工作者的角色 (請參閱 [圖 3 )。 每個角色在個別的 VM 上執行,並透過代理程式,在與 Azure 光纖通訊中。 代理程式會收集資源的計量和節點度量資訊 (包括 VM 使用方式、 應用程式狀態、 記錄檔、 資源使用狀況、 例外狀況和失敗狀況。 請注意在單一的實體主機或上一個 Windows 2008 hypervisor VM,可以執行每個的 VM。 主應用程式特定的執行階段組態由 Windows Azure,指定,根據服務層級合約,且其他商業 / 技術所需要。 在網頁的角色會裝載互動式 Web 應用程式,並提供繫結中 」 和 「 out-bound 連線 (要求-回應模式)。 透過 Azure-提供負載平衡器,提供高可用性,是路由傳送的繫結呼叫。 已經注意到這會指定每個 Web 的角色執行個體是沒有狀態 (Stateless),如此結構可以將要求路由叢集中的任何 Web) 角色。

背景工作角色會是一個特殊的應用程式在背景中執行.NET 應用程式。 這些應用程式不需要從外部應用程式中繫結連線。 但是它們可以傳送訊息至外部服務中。 時與 Web 的角色互動工作者的角色傳送 / 接收訊息,使用 Windows Azure 佇列存放服務。 另一個有趣是角色的擴充功能。 應用程式部署管理員可以狀態組態中,可能需要任何角色的多少個執行個體,並在光纖會決定執行系統的擴充需求而定,這些執行個體。 簡,Windows Azure 所提供的永遠上、 要求的部署] 和 [失敗的處理。

到目前為止,我已涵蓋定域機組的平台和 Windows Azure 的特定功能的一般概念。 接下來我將介紹一些核心定域機組的應用程式類型 」、 「 架構的模式和 「 您應該熟悉開發定域機組平台的應用程式時的最佳作法。

定域機組應用程式類型與模式

架構及設計模式的最佳作法,協助您選取定域機組平台及實作定域機組的服務及應用程式有很多。 一般來說,這些模式可分為四類: 計算、 儲存、 通訊和管理。

一旦您知道您的應用程式的計算模式正在處理中,您應該選取適當的計算模式。 如我所述,網頁的角色用於建置互動式應用程式的模式,適用於建置背景和排程器工作,工作者的角色時。 在某些情況下,您可能需要兩個功能。 規劃您的計算工作時的一個重要考量就是要記得以避免在移動大量的資料周圍方式中執行這些工作中。

儲存模式定域機組存放裝置] 提供遠端的儲存區,並摘要儲存媒體,從使用者。 設計是足夠彈性支援大範圍的應用程式的需求。 azure 位址的定域機組的儲存區的兩種模式: 資料表儲存] 和 [BLOB (二進位大型物件) 儲存。 資料表的儲存模式,可讓儲存下列資料表結構,而 BLOB (二進位大型物件儲存模式可以被用來儲存任何資料的索引鍵 / 值組,應用程式。

通訊模式的這些模式位址的訊息交換。 azure 技術運用 Windows Communication Foundation (WCF) 」 和 「 REST API 的 Web 服務通訊。 您考慮部分信任的模型和應用程式時實作通訊模式的沒有狀態 (Stateless) 性質。

系統管理模式系統管理模式區別服務管理的兩個核心特性: 部署及服務層級管理的服務。 部署模式組織服務定義、 設定,及監視,其他模式通訊服務層級管理] 及 [運作的定期維護時。

現在我們來看定域機組詳細資料的應用程式型別。 我將分類定域機組三個分類的應用程式類型會根據每一個位址的情況下的類型。 Web 應用程式 (第一個類別。 這些包括裝載的傳統 Web 應用程式新撰寫的應用程式,可能會利用兩個或多個資料來源和服務。 這些應用程式都需要自動擴充 」 和 「 向下調整的功能。 應用程式類似 Facebook 會是一個很好的範例。 在這樣的案例,組織就可能會想要時能夠處理增加的要求,基礎結構上花一點的大寫的啟動。

接下來有其主要的功能是執行需要大量處理器的作業和資料採擷,通常相同的資料的次數,分析應用程式,因此它們一次全部需要大量的儲存容量,以及處理器狀態的存取。 有不是需要付費的這類的大容量二十四小時,每週,7 天不過,所以雲朵服務具吸引力。

最後,有需要以平行方式執行多項工作,以便在短時間的時間執行大型的專案,平行運算應用程式。 再次,支付一時間--只有大容量的電腦可提供的定域機組是符合成本效益解決方案。

並非所有的應用程式是適用於在定域機組平台上執行的。 明顯的限制因素,包括資料安全性,潛在的鎖定-在定域機組提供者的通訊,信任的模型限制將資料移入和移出定域機組,與現有的服務,定域機組的平台和法律 / 隱私權考量之外的整合的效率開放式介面。 圖 4 ] 列出適用於計算,定域機組的某些情況下,並 [圖 5 會列出適當的模式]、 [案例,與 [功能]。

[圖 4] 應用程式類型適合的雲朵運算
定域機組應用程式類型 內容 案例範例
Web 應用程式 裝載傳統的 Web 應用程式和撰寫兩個或多個資料來源的互動式應用程式和服務。 啟動公司,建立 Web 共同作業應用程式需要花一點大寫基礎結構上。
平行計算。 計算工作的大規模的平行執行。 通常,這些工作執行一段短時間使用更多的計算和儲存的資源。 報紙,決定 digitization 的更好的 Web 消耗的報表上。
分析應用程式 分析處理執行不同的分析和資料採擷 (Data Mining) 演譯法對相同的資料再一次。 財務公司財務資料上執行 Monte Carlo) 模擬,定期評估風險。
[圖 5 模式、 功能及其對應的案例
系統考量 模式的類別 內容 Windows Azure 功能 案例範例
計算 視應用程式執行個體 應用程式需要擴充及向下調整功能。 自動化的管理網站和工作者的角色 可讓零售特殊事件期間可用的存放區網站。
  背景工作 執行平行的批次工作或背景應用程式。 使用多個背景工作角色執行背景工作執行個體 使用 Analytics 藉由以平行方式執行背景工作處理排程器。
儲存區 BLOB (二進位大型物件儲存 儲存大量的非結構化資料。 利用 Azure 的 Blob 儲存 公司的法律規範報告儲存備份的儲存區。
  結構化儲存體 將資料儲存在資料表結構中,時不要求完整的關聯式的語意。 azure 資料表儲存 以維護 Web 應用程式的 state—i.e 結構化儲存體。 儲存訂單或購物籃 」 的資訊。
通訊 服務介面 (Web 和 Web 服務 API) 公開應用程式的功能,透過 UI 和 Web 服務。 azure 建置的應用程式使用 ASP.NET,Silverlight,WCF Web 服務支援 公司數位資產管理解決方案建置其他服務公開 API。
  服務導向的整合 叫用外部 Web 服務,使用標準 Web 通訊協定。 azure 平台支援 WCF 用戶端] 和 [REST API Web 應用程式利用 Microsoft 主控 Live Meeting 服務協同作業。
  郵件 共用應用程式,可擴充、 可靠,和非同步方式之間的訊息。 利用 Azure 佇列工作角色通訊 Web 存放服務 Web 應用程式通知排程器以執行特定工作。
系統管理 定域機組的部署 部署應用程式所需的設定,例如延展及高可用性需求。 分隔服務定義,服務設定和封裝,以協助適當的角色 零售會儲存自動擴充使用量超過閾值時,並向下調整視需要設定 Web 入口網站。
  設計的作業 如何讓我的應用程式作業的準備,藉由提供健康狀態,並將記錄。 使用 [Windows Azure RoleManger.WriteToLog API,並覆寫RoleEntrypoint.GetHealthStatus() 的工作者角色 設計的開發人員會雲朵應用程式是經由檢測 (Instrumentation) 好記的作業。
  服務執行個體管理 啟動、 停止,和暫止定域機組應用程式。 管理服務的組態。 動態組態變更和錯誤條件的自動處理 將 Web 應用程式系統管理員使用 Azure 入口網站,以管理應用程式的狀態。
  管理警示 傳送立即訊息]、 [電子郵件或 [資源和帳單資訊相關的警示。 透過 Live 整合 啟用應用程式傳送 IMs。 資源使用的預設告知。
  服務層級管理 取得資訊,例如處理器時間,應用程式的資源消耗的頻寬。 模型為基礎的方法透過自動化的服務管理 尋找工作時程表及資源使用量資訊部署應用程式的相關的 ISV。

在 Windows Azure,Web 的角色,都是適用於工作角色適用於背景的應用程式時,請執行互動式 Web 應用程式。 資料儲存在 Azure Blob 和資料表的儲存區服務。 透過提供非同步訊息 Exchange 佇列服務啟用 inter-role 通訊。 平台支援基本的 HTTP 和 WS * 繫結 WCF 基礎 Web 服務和用戶端。 儲存服務,會由其他應用程式和定域機組的提供者公開透過 REST-樣式的介面,更容易使用的。

如您所知模式就會提供有彈性的解決方案在軟體開發中常見問題。 接下來,我會識別對應到上述的應用程式類型的一般模式類別。

而不嘗試說明每個個別的模式,深度,我將專注於廣泛的問題區域和相關聯的模式類別,並顯示如何在 Azure 開發的內容中實作這些模式。

Real-World 範例

讓我介紹,可協助說明這些概念的一些案例。 Fabrikam 的 ISV,希望建置裝載數位資產管理 Web 應用程式。 這個應用程式,可讓使用使用者定域機組中儲存數位的影像。 使用者必須能夠傳送圖片的預覽,標記它們,這些註解的位置資訊。 應用程式必須允許使用者使用自己的桌面應用程式直接從存放區中存取 [這些圖片。 [圖 6會表示為架構的高階檢視,Fabrikam 所公開 (Expose) 服務。 圖表所示,Fabrikam 會公開為 Web 應用程式和 Web 服務使用者管理其數位資產的。 這些服務會儲存,並從實作 Windows Azure BLOB (二進位大型物件服務的資產存放區中擷取數位資產。 Fabrikam 會實作背景處理器執行工作,例如標記、 縮圖產生和等等。

[圖 6 Fabrikam 裝載在 Windows Azure

看看如何在設計,、 開發時,及部署這類的應用程式到 Azure Services 平台。 討論區的會示範核心概念和 Windows Azure 功能。 您可以下載程式碼和文件,請參閱如何實作和裝載於 Windows Azure 整個案例。

應用程式設計和程式開發

在第一個步驟是瞭解應用程式案例中,選取適當的模式、 最佳實務和程式設計模型。 在這個過程中,您會識別應用程式和目標 Windows Azure 的工作負載的類型。 此外,您將會算出,應用程式之間的通訊] 及 [資料的儲存模式。 在此我假設 Fabrikam 建置與向外的需求和背景 Processer 產生中繼資料,從數位資產互動式 Web 應用程式。 在上述案例分別需要 Azure Web 和工作者的角色。 此外,Fabrikam 需要 Blob 儲存數位資產和中繼資料,服務介面公開資產和通訊的通訊模式的儲存空間。

為了開發 Windows Azure SDK 隨附開發環境,在本機的電腦上模擬 Windows Azure 藉此啟用離線的開發和偵錯。 .SDK 都支援 Web 和背景工作角色、 儲存、 Visual Studio 範本,封裝、 檢視和管理角色執行個體,和讓 F5 經驗在 Visual Studio 增益集工具。 您可以從 MS 下載中心 」 下載,下載 SDK。

進行的方式,使用 [Windows Azure 工具建立新專案使用定域機組的 Microsoft Visual Studio 的服務專案範本。 您可以加入必要的使用者介面 」、 「 應用程式的邏輯和 「 Web 應用程式所處理的輸入。 或者,您無法從現有的 ASP.NET Web 應用程式中進行啟動。 因為應用程式會在部分信任下執行的可避免呼叫違反這項限制的 API。 如需這項限制的詳細資訊,請參閱, Windows Azure SDK 信任原則參考 .

接著,匯入 Microsoft.ServiceHosting.ServiceRuntime 組件],並以啟用記錄、 讀取本機環境的組態和,如下所示,會從服務] 定義檔案中,讀取應用程式組態區段中使用個別的 API。

 // Writing log information
 RoleManager.WriteLog ("Information", "message to show in the log file"); 
 // Getting service configuration information 
 RoleManager.GetConfigurationSetting("MyConfigSection"); 

// Getting local environment; code snippet below shows getting a pointer
//to a local file 
ILocalResource resource = RoleManager.GetLocalResource(    "ComputeLocalStorage")

順帶一提,它在是取代上述的記錄程式設計最佳的作法,而且資源存取程式碼,可重複使用的應用程式區塊 (記錄和組態區塊),例如 Microsoft Enterprise Library 應用程式區塊。 您可以實作 Windows Azure 記錄的組態管理的特定提供者,並在執行階段將它們插入。 這些最佳的作法分離平台特定 API 的應用程式中,與 [說明] 的前提和定域機組的環境之間的提升重複使用性。

儲存需求,為您的應用程式將需要重新撰寫利用 Azure 儲存模式支援。 我會很快就解決。

接下來,將背景工作角色專案加入至您的專案,並開啟 WorkRole.cs。 此檔會包含名為 WorkerRole,RoleEntryPoint 類別的衍生類別。 這個類別提供管理初始化 [啟動],和停止背景工作角色的服務,以及監視服務的健康狀況的方法。

在這個步驟中您覆通常寫兩種的方法中所示 [圖 7 .

[圖 7 WorkerRole

public class WorkerRole : RoleEntryPoint
{
  public override void Start()
  {
      RoleManager.WriteToLog("Information", "Generating metadata from digital assets");

      while (true)
      { 
            RoleManager.WriteToLog("Information", "background task is executing thumbnail extraction");
            Thread.Sleep (1000);  
      }
  }

  public override RoleStatus GetHealthStatus()
  {
            return RoleStatus.Healthy;
  }
}

藉由按 F5,現在執行應用程式在本機開發) 結構。 您會看到以 Web 的記錄檔,和背景工作角色主控台的執行個體]。

現在讓我們來設定 BLOB 二進位大型物件儲存區,而且存取從 Web 的角色。

首先您必須設定將 BLOB 二進位大型物件設定儲存帳戶 information.you 將需要指定下列參數:

AccountName: 會指定 Windows Azure 帳號的名稱。

AccountSharedKey: 會指定用於驗證要求,對 Windows Azure 儲存在金鑰。 若要驗證要求時,您必須使用提出要求之帳戶金鑰簽署要求。

BlobStorageEndpoint: 會指定 Blob 的存放裝置 」 服務的基底 URI。

在 ContainerName 中: 會指定用來儲存此應用程式的影像的 BLOB (二進位大型物件容器的名稱。

例如,看下列組態設定:

  <ConfigurationSettings>
   <Setting name="AccountName" value="fabrikamAccount" />
   <Setting name="AccountSharedKey" value="Eby111M02xNOcqFlqUwJPLlmEtlCD
   XJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBekso45Gw==" />
   <Setting name="BlobStorageEndpoint" value="http://127.0.0.1:10000"/>
   <Setting name="ContainerName" value="fabrikamImagegallery"/>
  </ConfigurationSettings>

BLOB (二進位大型物件儲存 REST API 公開兩個資源: 容器和二進位大型物件 (BLOB)。 一組二進位大型物件 (BLOB) 的容器 ; 每個項目必須屬於容器。 使用 REST API 所定義的 PUT 操作寫入二進位大型物件 (BLOB)。 使用這些 API,您可以建立階層式命名空間組織資產,例如 fabrikamImagegallery / 影像和 fabrikamImagegallery / 文件,其中 fabrikamImagegallery 是容器和影像的名稱是指,BLOB (二進位大型物件的名稱。 請注意每個項目無法被從建構 4MB 的最大大小的區塊有效率的管理。

REST API 的使用是相當麻煩,而且因此 SDK 隨附摘要 REST 呼叫,會公開眾所皆知的存取模式,透過 BlobContainer 和 StorageAccountInfo 類別在範例程式庫]。

[圖 8 示範如何使用 BLOB (二進位大型物件) 儲存。

[圖 8 使用 Blob Storage

BlobStorage blobStorage = BlobStorage.Create(StorageAccountInfo.GetDefaultBlobStorageAccountFromConfiguration());

BlobContainer newContainer = blobStorage.GetBlobContainer("ContainerName");

newContainer.CreateContainer(null, ContainerAccessControl.Public);

this.container.ListBlobs(String.Empty, false);

BlobProperties properties = new 
 BlobProperties(string.Format(CultureInfo.InvariantCulture, "image_{0}", "idenitifier1"));

NameValueCollection metadata = new NameValueCollection();
metadata["Id"] = id;
metadata["Filename"] = "filename";
metadata["Tags"] = "Image";

properties.Metadata = metadata;

this.container.CreateBlob(properties, imageBlob, true);

現在,讓我們來建立佇列存放服務,從 Web 角色中傳送訊息,到一個工作者的角色。 Windows Azure 佇列服務會提供與服務間的可靠、 永續性訊息。 REST API 以 [佇列] 服務會公開兩個資源: 佇列和訊息。 有可能建立無限數量的佇列,每個使用唯一的名稱加以識別。 訊息的大小上限限於 8KB。 您必須負責刪除郵件後讀取 ; 否則訊息將會維持在佇列中指定的時間。

[圖 9 示範如何存取佇列儲存] 和 [在工作者角色的訊息。

圖 9]: 佇列存放裝置 」 作業

public class WorkerRole : RoleEntryPoint
{
        public override void Start()
        {
            Uri baseUri = new               
                 Uri(RoleManager.GetConfigurationSetting("QueueEndpoint"));
            string accountName = RoleManager.GetConfigurationSetting("AccountName");
            string accountKey =  
                RoleManager.GetConfigurationSetting("AccountSharedKey");

           StorageAccountInfo account = new StorageAccountInfo(
           baseUri,
                null,
                accountName,
                accountKey);

            QueueStorage service = QueueStorage.Create(account);
            MessageQueue queue = service.GetQueue("fabrikamimageprocessingqueue");

            while (true)
            {
                Thread.Sleep(10000);
                if (queue.DoesQueueExist())
                {
                   Message msg = queue.GetMessage();
                   if (msg != null)
                   {

                      queue.DeleteMessage(msg);
                   }
                }
            }
        }
….
}

現在您已經準備好嘗試在本機開發) 結構,這個應用程式,藉由按 F5。 您會看到網站的角色接收輸入] 和 [傳送訊息至佇列透過工作者的角色。 現在您已經完成所需的所有必要的開發活動並準備好要發行應用程式至 Azure。

部署服務

以 Windows Azure 中部署服務是相當簡單的。 不過,您必須先決定哪些檔案 (環境需求)、 如何封裝應用程式,是否可以使用現有工具建立並上載封裝,以及如何儲存您的套件,在定域機組儲存區] 及 [稍後將部署至 Azure,在服務定義檔 (應用程式組態資訊) 中包含與服務組態資訊。

以下是我如何解決這些範例應用程式的需求。

Fabrikam 的 ISV 會有開發人員、 [部署和 [操作角色],來管理其定域機組的應用程式。 開發人員會建立服務定義檔,包含應用程式的相關資訊。 服務定義檔案 (.csdef) 會定義服務之可用的角色、 指定服務的端點,和建立服務的組態參數。 服務在部署之後,無法變更服務的定義設定。 這個檔案便成為服務套件檔案一部分,在封裝的過程。

開發人員也會建立服務組態檔 (指定所需的執行個體的數目和 Azure 的帳戶資訊) 的本機偵錯 Azure 執行部署。 「 服務組態檔案 (.cscfg) 會指定一或多個角色執行個體執行的服務中的組態設定的值。 操作人員,就可以沒有重新部署服務,以動態方式修改這些服務的組態設定。 服務組態檔案無法封裝與服務,但上載到 「 Windows Azure 光纖,為不同的檔案。

部署工作人員會更新服務組態檔生產部署之前,先 Azure 帳戶的特定資訊與操作的需求 (實際執行的執行個體所需的數目)。

開發人員] 或 [部署工作人員會建立使用 Visual Studio Tools] 或 [CSPack 工具 Azure) SDK 所附的 Azure 部署套件。

可以在 Azure BLOB (二進位大型物件) 儲存區中儲存部署套件和擷取到 Azure 定域機組平台部署時

在服務封裝的檔案 (.cspkg) 是壓縮的檔,其中包含角色定義和所有角色相關的檔案 (二進位碼檔案、 影像和組態) 封裝成一個的成品。 您無法藉由使用 Visual Studio 中,或使用 CSPack 工具,以產生這些套件。 當您使用 Visual Studio 開發) 結構上,執行建立套件時,會有.csx 副檔名。 但是當您使用 「 發佈功能,它會建立.cspkg 檔,它是.csx 檔案的壓縮與加密版本。 這所加密,並具有.cspkg 副檔名的壓縮的版本上載至定域機組中。

現在您可以上您服務組態檔 (.cscfg) 」 和 「 封裝檔案 (.cspkg) 載到 Windows Azure。 此,首先您需要取得 Windows Azure 計算] 和 [儲存帳戶從 Azure 服務開發人員的入口網站。 取得這些帳戶之後您可以部署封裝至定域機組不過 Azure 開發人員入口網站。 上載檔案後您將會提供內部的執行 URL 您用來測試您的服務,在 Windows 的 Azure 光纖。 當您移至實際執行環境時您會看到在實際執行的 URL。

系統管理

管理函式會涵蓋管理、 控管和作業的應用程式部署在定域機組的環境層面。 利用應用程式所裝載的定域機組平台,會假設部署服務是在適當的服務層級管理、 資源管理、 服務所提供、 安全性 / 信任模型,及監視受控制的環境中。 您應該要熟悉金鑰所需的服務管理的功能性功能。 它們包括:

  • 藉由包含適當的檢測,請使用易記的作業實作的最佳開發服務。
  • 監視 [狀況] 和 [定域機組的應用程式和服務的可用性。
  • 收集的計量和報告服務的使用量,效能,帳單。
  • 啟用自動化,提供的服務] 和 [更新服務的組態。

在 Windows Azure,代理程式會監視的失敗狀況的每個 VM] 執行個體,並收集關於失敗、 效能的量值和使用標準的度量資訊中。

azure 光纖會自動提供和管理方面,以限制的人輸入。 人] 和 [處理程序都是容易發生錯誤。 此自動化可協助避免人為的錯誤。 在 Windows Azure,應用程式在部分信任的沙箱中執行要求是負載平衡,失敗狀況會自動管理。

身為開發人員您應該熟悉您的服務作業的行為。 這些行為會記錄為服務定義和組態模型的一部分,並傳送給定域機組平台,以協助自動化。

此外,請遵循下列最佳準則:

在程式碼中加入記錄資訊

RoleManager.WriteLog ("Information", "message to show in the log file"); 
  • Overiding GetHeatlthStatus 方法
public override RoleStatus GetHealthStatus()
{
      // return the health status of worker role.
      return RoleStatus.Healthy;
 }
  • 取得記錄檔的分析應用程式狀態

Windows Azure 服務管理

在 Windows Azure,服務管理會遵循以模型為導向的方法的模型用來從開發人員和 deployers 收集所需的組態資訊的。 azure 光纖會使用這些模型,來管理包括動態組態的更新、 自動化的錯誤處理,和服務監視 「 服務生命週期。 Windows Azure 採用其中的每個角色是隔離的錯誤網域中避免單點失敗 (硬體或軟體) 的跨多個計算節點,或電腦 racks。 此外,Windows Azure 確保服務執行時更新 (循環向前或向後服務的子集),藉由要求透過組態升級的網域。

您應該使用 [< 設定選項] 和 [「 複製記錄檔選項在 Azure 入口網站中複製記錄訊息 BLOB (二進位大型物件) 儲存。

完成複製您無法存取記錄檔,從使用先前所述的程式設計模型的 BLOB (二進位大型物件存放區。

在未來 Windows Azure 會公開存取和控制項管理的管理介面和操作的活動。 這有助於在公司服務管理工具來監視和管理定域機組的應用程式。

結論

形成瞭解定域機組電腦架構模型,尋找相關的模式決定程式設計的模型,並啟用自動化的管理是成功的定域機組運算演進的關鍵。 Windows Azure 是與記住的開發人員設計讓開發人員快速且輕鬆地建立、 部署、 管理,和散發 Web 應用程式和服務。

身為的開發人員,您應該累積一組核心模式,將協助您有效地開發定域機組的應用程式。 此外,您應該記得擷取及共用週期性的解決方案問題及其他新興的模式,例如,我們的解決方案及產品可以提供更好的 Out-of-the-Box 支援的核心雲朵計算模式。

我要感謝 Steve Marx、 Jason Hogg、 David Hill、 Fred Chong、 進度,Eugenio Nataraja Koduru,其寶貴的意見對此發行的。

使用 Microsoft 服務管理解決方案的群組的一個主要架構設計人員 joshy Joseph 。 他主要技術 」 和 「 專業知識則包含分散式的運算,框格運算和 Web 服務。 他是 Grid Computing (Prentice Hall 2004) 一書的作者和規模的貝爾實驗室,超過 35 個檔案上的專利的。 此外,他已寫入許多的技術文件分散式的運算 」 和 「 商務程序開發。 Joshy 可連絡到在 jojoseph@Microsoft.com.