做爲應用程序以及其餘類型在線服務的核心平臺,Windows Azure 除了針對雲計算基礎建設、營運與管理部份特別設計並支持外,它也必需要具備應用程序及其餘爲基礎開發服務的相關支持,以一個操做系統來講,除了硬件與運算 資源的分配與控管外,對軟件最直接最基本的支持,非存儲功能莫屬。若是沒有存儲功能的話,操做系統只能執行運算,而不能利用近端的媒體來存儲信息,所以操 做系統必需要有存儲的能力,纔可以達到開放給應用程序發展的最低限度服務。在 Windows Azure 上開放了三種不一樣的存儲功能,分別爲 BLOB、Queue 以及 Table 三種存儲功能,統稱爲 Storage Service。php
BLOB(大型二進制對象)服務是用來存儲檔案與二進制數據用的,它的做用與通常計算機上的文件系統至關,能夠存放不一樣的二進制文件(包含文本 文件),外界可使用它所開放的 REST API 或是 .NET Framework 的 Data Services API 來存取它,如下載或上傳不一樣的檔案數據。目前 Windows Azure 在 BLOB 支持上又多了兩個新功能,一個是可做業內容提供商的內容散佈網絡(Content Delivery Network, CDN),另外一個則是可將 BLOB 空間模擬成磁盤驅動器的 Windows Azure Drive,這兩個新功能均可以更加擴大 BLOB 的使用範圍。java
Queue(隊列)服務是用來暫存來自應用程序的不一樣要求信息,以 FIFO(先進先出)方式由背景應用程序處理的一種數據存儲功能,與 MSMQ 相似,應用程序能夠將自定義的數據結構或對象以串行化方式轉存到 Queue 中,並由處理隊列數據的背景服務將 Queue 中的數據依序取出並處理,適合應用在須要快速響應的客戶端應用程序,而伺服端也能夠由於應用程序的要求都進入了 Queue,減小出現資源互斥或鎖定發生的機率。數據庫
Table(表格)服務是用來存儲小型的信息,就像是將數據存儲在數據庫的表格同樣,Table 是一種具彈性且能夠不限數量(只受帳戶可用的存儲空間大小限制)的數據存儲,很是適合用來存儲應用程序數據,若是應用程序不大,不須要使用到像 SQL Azure 這樣的雲端關係數據庫的話,Table 服務應該就足夠知足小量數據存儲的需求。windows
Windows Azure 的存儲服務是基於帳戶的一種服務,每一個帳戶依照申請 Windows Azure 時所配給的存儲空間,來使用前述的三種存儲服務。並且每一個服務的對外入口都不一樣。相對的,如果在本機開發應用程序的話,在 Development Storage 也是使用不一樣的入口,藉以明確區隔不一樣的服務功能:網絡
所以在開發使用 Windows Azure 存儲功能時,須要注意在服務 URL 上的變化,但微軟仍是對於 .NET 的開發人員投以關懷的眼神,這些 URL 的變化都會由 Windows Azure SDK 中所使用的 Microsoft.WindowsAzure.StorageClient.dll 在背後幫開發人員作掉了,開發人員只須要針對服務的功能開發程序便可,不須要關注這些細節內容。固然,Visual Studio Tools for Windows Azure 也至關程度了支持開發人員簡化這些設定。在雲端項目中的任一個應用程序角色上編輯項目內容,能夠在配置文件(Settings)中,以簡易的方式設定要連 到 Windows Azure 存儲的服務聯機字符串。數據結構
NOTEeclipse
服務聯機字符串(Service Connection String)是要鏈接到 Windows Azure 存儲服務時必需要設定的聯機字符串,與 ADO.NET 的數據庫聯機字符串概念相似,它的格式是:工具
DefaultEndpointsProtocol=[http|https];AccountName=[StorageServiceAccountName];AccountKey=[StorageServiceAccountKey]雲計算
這些信息均可以在 Windows Azure 的項目管理頁面中取得。若只是要鏈接到本機的 Development Storage,只要使用 UseDevelopmentStorage=true 就能夠了。操作系統
不管是 BLOB、Queue 仍是 Table,它們都會以 REST API 的方式讓外界能夠存取,同時也由於是 REST API,所以客戶端程序只要能夠存取 HTTP 就能使用這些服務,因此不管是微軟的 .NET 平臺,或是 PHP/Java/Perl/Ruby 等開發平臺,都可以存取 Windows Azure 的存儲服務。固然微軟給了 .NET 的開發人員最充份的支持,Windows Azure SDK 中內含了數個 Microsoft.WindowsAzure.*.dll,包裝了這些 REST API,以及和 ADO.NET Data Services Framework 的 API 並用,讓 .NET 平臺的開發人員得以順暢簡單的發展應用程序。
NOTE
如今除了 .NET 平臺外,也有許多開發人員針對 PHP/Ruby 與 Java 開發 SDK 與工具,以讓這些程序語言開發的應用程序得以存取 Windows Azure 存儲服務,若想知道這些 SDK 與工具的詳細信息,請參考:
Azure SDK for Java:http://www.interoperabilitybridges.com/projects/windows-azure-sdk-for-java.aspx
Azure SDK for PHP:http://www.interoperabilitybridges.com/projects/php-sdk-for-windows-azure.aspx
Windows Azure Tools for Eclipse:http://www.interoperabilitybridges.com/projects/windows-azure-tools-for-eclipse.aspx
申請存儲服務帳戶
以 Windows Azure 帳戶管理的設定,每個申請使用 Windows Azure 的 Live ID Account,能夠擁有創建 5 個存儲帳戶的權利,這有助於將存儲要求分散給不一樣的 VM 來處理,避免都集中在同一個 VM 羣處理,以提高存儲服務的處理效率。即使如此,這 5 個存儲帳戶所使用的空間都同樣會共享總配額(若是申請的是有免費配額量的話),超過的配額部份會計費,因此在設定存儲帳戶時應先分析與確認本身的需求,再 決定要申請幾個帳戶。
當申請完成後,便可在該服務的管理頁面中找到 AccountName 與 AccountKey,可用來創建服務聯機字符串。
NOTE
若想進一步瞭解應用程序或存儲服務賬戶申請的過程,能夠參考下列文章:
http://www.dotblogs.com.tw/regionbbs/archive/2010/02/18/vs2010.and.azure.platform.create.azure.service.aspx
NOTE
對於 Storage 服務而言,一個應用程序只能設定使用一支 AccountKey 來鏈接 Storage 服務,但有時應用程序可能會須要同時存取不一樣的 Storage 服務,所以,Windows Azure 對每個 Storage 帳戶都提供兩組 AccountKey 以備不時之需,大多數的狀況下,只須要 Primary Access Key 便可。