本文是 Windows Azure 入門教學(xué) 的第四篇文章。
本文將會介紹如何使用 Blob Storage。 Blob Storage可以看做是云端的文件系統(tǒng)。與桌面操作系統(tǒng)上不同,我們是通過 REST API來進(jìn)行對文件的操作。有關(guān) REST API的詳細(xì)信息,請參見 Blob 服務(wù) API 。
為了方便 .NET開發(fā)人員,我們在 SDK中提供了 Microsoft.WindowsAzure.StorageClient類來幫助發(fā)送REST請求。
在開始本教學(xué)之前,請確保你從Windows Azure 平臺下載 下載并安裝了最新的 Windows Azure開發(fā)工具。 本教學(xué)使用 Visual Studio 2010作為開發(fā)工具。
由于我們要在本地模擬環(huán)境下測試 Blob Storage,首先,請確保 Storage Emulator已經(jīng)啟動。我們可以找到管理器的進(jìn)程手動啟動或者讓 Visual Studio 2010幫助我們啟動他。
右擊工具欄中 Windows Azure模擬器的圖標(biāo),選擇” Show Storage Emulator UI”。彈出如下圖所示的窗口:
http://wiki.jikexueyuan.com/project/windows-azure-getting-started/images/8.1.png" alt="" />
我們要關(guān)注的是 Service management中 Blob所在的一行。要確保 Status為 Running。
確認(rèn)完畢后啟動 Visual Studio 2010,并且新建一個 Console項目。
請在項目屬性頁里確認(rèn)項目的 Target framework的值是 .NET Framework 4或 .NET Framework 3.5。然后添加對 C:/Program Files/Windows Azure SDK/v1.3/ref/Microsoft.WindowsAzure.StorageClient.dll的引用。該路徑為 SDK默認(rèn)安裝路徑,如果你不能在這個路徑中找到 Microsoft.WindowsAzure.StorageClient.dll請從 SDK安裝路徑中尋找。
首先引用命名空間:
using Microsoft.WindowsAzure;
using Microsoft.WindowsAzure.StorageClient;
然后在 Main方法中加入如下代碼:
static void Main(string [] args)
{
var storageAccount = CloudStorageAccount .DevelopmentStorageAccount;
var blobclient = storageAccount.CreateCloudBlobClient();
// 檢查 container 是否被創(chuàng)建,如果沒有,創(chuàng)建 container
var container = blobclient.GetContainerReference("helloworldcontainer" );
container.CreateIfNotExist();
// 新建一個 blob ,內(nèi)容為 "Hello World"
var blob = container.GetBlobReference("myfile" );
blob.UploadText("Hello World!" );
// 讀取并顯示 blob 內(nèi)容
var blobcontent = blob.DownloadText();
Console .WriteLine(blobcontent);
// 刪除 blob
var succeed = blob.DeleteIfExists();
Console .WriteLine(succeed ? "Delete Succeed" : "Delete Failed" );
Console .ReadLine();
}
步驟三中的代碼中,首先我們通過 CloudStorageAccount.DevelopmentStorageAccount來說明我們使用的本地的 Development Storage自帶賬戶而不是真正的云端存儲服務(wù)賬戶。 (如果要用真實賬戶可以使用
//DefaultEndpointsProtocol=https 可以改成 DefaultEndpointsProtocol=http 表示用 HTTP 而不是 HTTPS
CloudStorageAccount .Parse("DefaultEndpointsProtocol=https;AccountName=[ 用戶名 ];AccountKey=[ 密碼 ]" );
來實例化對象 )然后通過該賬戶類來實例化一個 Blob客戶端類。這兩步是使用 SDK中 StorageClient程序集來調(diào)用 Blob Storage服務(wù)的必要步驟。接下來的代碼邏輯可以分為四部分:
第一部分,我們得到一個 container的引用。就作用來說我們大致上可以把 container類比成是桌面操作系統(tǒng)中的文件夾。我們在得到引用后檢查該 container是否存在。注意如果是用的真實賬號,當(dāng)調(diào)用 CreateIfNotExist()方法后就有 REST請求發(fā)出了。
后面幾部分代碼非常簡單。我們可以看到 SDK提供給我們的 API是十分簡單好用的。
按 F5調(diào)試程序。如果一切正常你將會看到輸出的消息如下圖所示:
http://wiki.jikexueyuan.com/project/windows-azure-getting-started/images/8.2.png" alt="" />
使用支持 SilverLight的瀏覽器打開 https://windows.azure.com/。 (注意:您可能需要輸入您的 Live ID和密碼來通過身份驗證 ) 點擊 New Storage Account:
http://wiki.jikexueyuan.com/project/windows-azure-getting-started/images/8.3.png" alt="" />
在 Create a New Storage Account對話框里,在標(biāo)記為 Choose a subscription 的下拉框里選擇一個訂閱選項:
http://wiki.jikexueyuan.com/project/windows-azure-getting-started/images/8.4.png" alt="" />
在標(biāo)記為 Enter a URL的文本框里輸入一個 URL前綴來指定它的 URL:
http://wiki.jikexueyuan.com/project/windows-azure-getting-started/images/8.5.png" alt="" />
選擇區(qū)域:
http://wiki.jikexueyuan.com/project/windows-azure-getting-started/images/8.6.png" alt="" />
最后點擊 Create按鈕完成創(chuàng)建。等待創(chuàng)建過程完成后,我們可以看到系統(tǒng)給我們分配了 3個 URL,分別是 Blob URL、 Table URL和 Queue URL,以及剛才我們自己輸入的用戶名。
http://wiki.jikexueyuan.com/project/windows-azure-getting-started/images/8.7.png" alt="" />
然后點擊屬性欄里的 Primary access key或者 Secondary access key可以看到這些 key的值。點擊 View Storage Access Keys對話框里的 Copy to Clipboard按鈕就可以拷貝到粘貼板里了。
http://wiki.jikexueyuan.com/project/windows-azure-getting-started/images/8.8.png" alt="" />
將代碼里的 :
CloudStorageAccount .DevelopmentStorageAccount
替換成 :
CloudStorageAccount .Parse("DefaultEndpointsProtocol=https;AccountName=[ 用戶名 ];AccountKey=[ 密碼 ]" )
根據(jù)剛才創(chuàng)建的 Storage Account填入用戶名和密碼。最后運(yùn)行程序的結(jié)果是一樣的。但是這次用的是 Windows Azure上的 Blob Storage作為存儲服務(wù)。
http://wiki.jikexueyuan.com/project/windows-azure-getting-started/images/8.9.png" alt="" />