Windows Azure入门教学系列 (四):使用Blob Storage
本文将会介绍如何使用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 FilesWindows Azure SDKv1.3refMicrosoft.WindowsAzure.StorageClient.dll的引用。该路径为SDK默认安装路径,如果你不能在这个路径中找到Microsoft.WindowsAzure.StorageClient.dll请从SDK安装路径中寻找。
步骤三:添加代码
首先引用命名空间:
|
1
2
3
|
using Microsoft.WindowsAzure;using Microsoft.WindowsAzure.StorageClient; |
然后在Main方法中加入如下代码:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
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作为存储服务。

Windows Azure入门教学系列 (四):使用Blob Storage的更多相关文章
- Windows Azure入门教学系列 (七):使用REST API访问Storage Service
本文是Windows Azure入门教学的第七篇文章. 本文将会介绍如何使用REST API来直接访问Storage Service. 在前三篇教学中,我们已经学习了使用Windows Azure S ...
- Windows Azure入门教学系列 (一): 创建第一个WebRole程序
原文 Windows Azure入门教学系列 (一): 创建第一个WebRole程序 在第一篇教学中,我们将学习如何在Visual Studio 2008 SP1中创建一个WebRole程序(C#语言 ...
- Windows Azure入门教学系列 (二):部署第一个Web Role程序
本文是Windows Azure入门教学的第二篇文章. 在第一篇教学中,我们已经创建了第一个Web Role程序.在这篇教学中,我们将学习如何把该Web Role程序部署到云端. 注意:您需要购买Wi ...
- Windows Azure入门教学系列 (九):Windows Azure 诊断功能
本文是Windows Azure入门教学的第九篇文章. 本文将会介绍如何使用Windows Azure 诊断功能.跟部署在本地服务器上的程序不同,当我们的程序发布到云端之后,我们不能使用通常的调试方法 ...
- Windows Azure入门教学系列 (六):使用Table Storage
本文是Windows Azure入门教学的第六篇文章. 本文将会介绍如何使用Table Storage.Table Storage提供给我们一个云端的表格结构.我们可以把他想象为XML文件或者是一个轻 ...
- Windows Azure入门教学系列 (五):使用Queue Storage
本文是Windows Azure入门教学的第五篇文章. 本文将会介绍如何使用Queue Storage.Queue Storage提供给我们一个云端的队列.我们可以用Queue Storage来进行进 ...
- [转]Windows Azure入门教学系列 (六):使用Table Storage
本文转自:http://blogs.msdn.com/b/azchina/archive/2010/03/11/windows-azure-table-storage.aspx 本文是Windows ...
- Windows Azure中文博客 Windows Azure入门教学系列 (一): 创建第一个WebRole程序
http://blogs.msdn.com/b/azchina/ 本文转自:http://blogs.msdn.com/b/azchina/archive/2010/02/09/windows-azu ...
- Windows Azure入门教学系列 (八):使用Windows Azure Drive
我们知道,由于云端的特殊性,通常情况下,对文件系统的读写建议使用Blob Storage来代替.这就产生了一个问题:对于一个已经写好的本地应用程序,其中使用了NTFS API对本地文件系统读写的代码是 ...
随机推荐
- C# 调用迅雷 7 迅雷下载开放引擎
最近有个项目需要用winform调用迅雷下载.上网百度后发现迅雷自带的com组件从迅雷5之后就废掉了,除了能添加任务,其余功能全不能用.后来又发现了迅雷下载开放引擎这么个东西 http://thund ...
- POJ输出状态的逻辑。
实測POJ应该是採取一个一个点測.哪个点fail了就输出哪个点的状态,但接下来的点貌似还是要測. 測试方法,1000先測出有6个測点1,2,3,4,6.15,然后交了下面代码. #include &l ...
- hdu4597 Play Game
Play Game Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others) Total Sub ...
- Python重写C语言程序100例--Part9
''' [程序71] 题目:编写input()和output()函数输入,输出5个学生的数据记录. 1.程序分析: 2.程序源码: 使用list来模拟结构(不使用class) stu = [strin ...
- ARM
ARM全新架构:cortex架构 cortex-A:高端:cortex-R:实时嵌入式系统:cortex-m:廉价: 哈佛结构:数据总线和地址总线分开: 冯若依曼:地址总线,数据总线不分开: cort ...
- git阶段学习总结
学习git大约有两个星期了,脑子里总算有点干货了,可以拿出来总结一下: git,用于版本控制的,刚开始觉得它是linux下默认的命令,其实也是个工具需要apt-get install git 安装一下 ...
- 二维码类库--phpqrcode使用简介
#载入类文件 include 'phpqrcode.php'; $value = '二维码内容'; $errorCorrectionLevel = 'L';//容错级别 L.M.Q.H $matrix ...
- 【集训笔记】动态规划【HDOJ1159【HDOJ1003
终于开始DP了] HDOJ_1159 Common Subsequence 题目链接 Sample Input abcfbc abfcab programming contest abcd mnp ...
- DW8051调试终结
都不记得自己到底揪心了多久 —— 归根结底还是自己太菜了.终于找到了DW8051移植的bug. 这么大的一个图居然没有看到,真是气煞老夫也. 在原来移植的基础之上加两个反相器就OK 了
- redis(三)redis+Keepalived主从热备秒级切换
一 简介 安装使用centos 5.10 Master 192.168.235.135 Slave 192.168.235.152 Vip 192.168.235.200 编译环境 yum -y in ...