日期:2014-05-17  浏览次数:20829 次

Windows Azure(四-2):云端的文件系统(Blob Storage)

Windows Azure(四-2):云端的文件系统(Blob Storage)
2011年06月29日
  前一篇《Windows Azure(四-1):Worker Role(对应传统服务器BackGroud 程序) 》
  序:文件系统是操作系统的核心功能模块,用于数据文件的管理与存储;在云端当然也存在管理文件的情形,我们如何操作云端的呢?通过REST API来进行对文件的操作,具体查看Blob 服务 API。 准备
  请确保你从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程序集引用
  因为 微软提供Microsoft.WindowsAzure.StorageClient类来帮助RSet API调用,发送 REST请求。所以引用它的dll即可:
  1. 确保:项目属性页里确认项目的Target framework的值是.NET Framework 4或.NET Framework 3.5。(注意哦,一定设置,默认不是这个设置!!)
  2. 然后添加对C:/Program Files/Windows Azure SDK/v1.4/ref/Microsoft.WindowsAzure.StorageClient. dll的引用。(该路径为SDK默认安装路径,如果你不能在这个路径中找到Microsoft.WindowsAzure.StorageClient.dll请从SDK安装路径中寻找。)s
  步骤三:添加代码   using System; using System.Collections.Generic; using System.Linq; using System.Text; using Microsoft.WindowsAzure.StorageClient; using Microsoft.WindowsAzure; namespace WT.Cloud.BlobStorageAPITest { class Program { static void Main(string[] args) { // 创建Blob 客户端 var account = CloudStorageAccount.DevelopmentStorageAccount; CloudBlobClient blobclient = account.CreateCloudBlobClient(); // 检查container是否被创建,如果没有,创建container CloudBlobContainer container = blobclient.GetContainerReference("helloworldcontai ner"); container.CreateIfNotExist(); // 新建一个CloudBlob,内容为"Hello World" CloudBlob cloudBlob = container.GetBlobReference("helloworldFile"); cloudBlob.UploadText("wt,love azure program"); // 读取云端内容 Console.WriteLine("读取云端内容:"); string cloudContent = cloudBlob.DownloadText(); // 删除blob bool succeed = cloudBlob.DeleteIfExists(); } } }      运行:
  
  真实的云端操作
  步骤四:观察并分析代码
  步骤三中的代码中,首先我们通过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 Sto