离线下载
PDF版 ePub版

微软中文 · 更新于 2018-11-28 11:00:43

使用Blob Storage

本文是 Windows Azure 入门教学 的第四篇文章。

本文将会介绍如何使用 Blob Storage。 Blob Storage可以看做是云端的文件系统。与桌面操作系统上不同,我们是通过 REST API来进行对文件的操作。有关 REST API的详细信息,请参见 Blob 服务 API

为了方便 .NET开发人员,我们在 SDK中提供了 Microsoft.WindowsAzure.StorageClient类来帮助发送REST请求。

在开始本教学之前,请确保你从Windows Azure 平台下载 下载并安装了最新的 Windows Azure开发工具。 本教学使用 Visual Studio 2010作为开发工具。

步骤一:创建解决方案和项目

由于我们要在本地模拟环境下测试 Blob Storage,首先,请确保 Storage Emulator已经启动。我们可以找到管理器的进程手动启动或者让 Visual Studio 2010帮助我们启动他。

右击工具栏中 Windows Azure模拟器的图标,选择” Show Storage Emulator UI”。弹出如下图所示的窗口:

我们要关注的是 Service management中 Blob所在的一行。要确保 Status为 Running。

确认完毕后启动 Visual Studio 2010,并且新建一个 Console项目。

步骤二:添加 SDK 程序集引用

请在项目属性页里确认项目的 Target framework的值是 .NET Framework 4或 .NET Framework 3.5。然后添加对 C:/Program Files/Windows Azure SDK/v1.3/ref/Microsoft.WindowsAzure.StorageClient.dll的引用。该路径为 SDK默认安装路径,如果你不能在这个路径中找到 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 是否被创建,如果没有,创建 container

     var   container = blobclient.GetContainerReference("helloworldcontainer" );

     container.CreateIfNotExist();

     //  新建一个 blob ,内容为 "Hello World"

     var   blob = container.GetBlobReference("myfile" );

     blob.UploadText("Hello World!" );

     //  读取并显示 blob 内容

     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自带账户而不是真正的云端存储服务账户。 (如果要用真实账户可以使用

//DefaultEndpointsProtocol=https 可以改成 DefaultEndpointsProtocol=http 表示用 HTTP 而不是 HTTPS

CloudStorageAccount .Parse("DefaultEndpointsProtocol=https;AccountName=[ 用户名 ];AccountKey=[ 密码 ]" );

来实例化对象 )然后通过该账户类来实例化一个 Blob客户端类。这两步是使用 SDK中 StorageClient程序集来调用 Blob Storage服务的必要步骤。接下来的代码逻辑可以分为四部分:

  • 检查 container是否被创建,如果没有,创建 container
  • 新建一个 blob,内容为 "Hello World"
  • 读取并显示 blob内容
  • 删除 blob

第一部分,我们得到一个 container的引用。就作用来说我们大致上可以把 container类比成是桌面操作系统中的文件夹。我们在得到引用后检查该 container是否存在。注意如果是用的真实账号,当调用 CreateIfNotExist()方法后就有 REST请求发出了。

后面几部分代码非常简单。我们可以看到 SDK提供给我们的 API是十分简单好用的。

步骤五:运行程序

按 F5调试程序。如果一切正常你将会看到输出的消息如下图所示:

步骤六:创建新的 Storage Account

使用支持 SilverLight的浏览器打开 https://windows.azure.com/。 (注意:您可能需要输入您的 Live ID和密码来通过身份验证 ) 点击 New Storage Account:

在 Create a New Storage Account对话框里,在标记为 Choose a subscription 的下拉框里选择一个订阅选项:

在标记为 Enter a URL的文本框里输入一个 URL前缀来指定它的 URL:

选择区域:

最后点击 Create按钮完成创建。等待创建过程完成后,我们可以看到系统给我们分配了 3个 URL,分别是 Blob URL、 Table URL和 Queue URL,以及刚才我们自己输入的用户名。

然后点击属性栏里的 Primary access key或者 Secondary access key可以看到这些 key的值。点击 View Storage Access Keys对话框里的 Copy to Clipboard按钮就可以拷贝到粘贴板里了。

步骤七:使用 Storage Account 运行程序

将代码里的 :

CloudStorageAccount .DevelopmentStorageAccount

替换成 :

CloudStorageAccount .Parse("DefaultEndpointsProtocol=https;AccountName=[ 用户名 ];AccountKey=[ 密码 ]" )

根据刚才创建的 Storage Account填入用户名和密码。最后运行程序的结果是一样的。但是这次用的是 Windows Azure上的 Blob Storage作为存储服务。