存储服务是除了计算服务之外最重要的云服务之一。说到云存储,大家可以想到很多产品,例如:AWS S3,Google Drive,百度云盘...而在Windows Azure中,存储服务却是在默默无闻的工作着,以至于除了虚拟机磁盘,大家都不知道Windows Azure的存储还能做些什么。的确,如果只是从Windows Azure的管理控制台来看,用户能针对Windows Azure存储所做的操作寥寥无几。也许,微软的初衷是将Windows Azure存储定位成面向开发人员的服务——Windows Azure存储提供了丰富的SDK和RESTful API,还有PowerShell和CLI。

接下来,我们通过模拟一个真实的场景来熟悉Windows Azure存储的强大功能,这个场景就是网盘——我们把Windows Azure存储当网盘使用。我们使用PowerShell来进行演示,同理,用其他语言的SDK或者RESTful API亦可实现同样的功能。我们假定这篇文章的读者已经掌握Windows Azure存储相关的基本概念和Windows Azure PowerShell的基本操作。

首先我们来定义一个存储账号上下文(context),在存储账号上下文中指定要使用的存储账号和访问密钥。

$saContext=New-AzureStorageContext -StorageAccountName [存储账户名称] -StorageAccountKey [存储账号访问密钥]

有了这个存储账号上下文,相当于为我们的网盘安了一个家,准备开工喽~~~

Windows Azure Blob存储没有文件夹的概念,只有容器(Container),而且容器只有1层,不能像目录那样一层套一层。

列目录——看看我们的存储账号中有哪些容器:

Get-AzureStorageContainer -Context [存储账号上下文,例如:前文中定义的变量$saContext]

列文件——列出指定容器中的文件:

Get-AzureStorageBlob -Container [容器名称] -Context [存储账号上下文,例如:前文中定义的变量$saContext]

上传文件——将本地文件上传到指定的容器中:

Set-AzureStorageBlobContent -File [本地待上传的文件完整路径,例如:d:\data\demo.txt] -Container [容器名称] -Context [存储账号上下文]

上传文件——批量上传:

Get-ChildItem –Path [本地待上传的带通配符的文件路径,例如:d:\data\*] | Set-AzureStorageBlobContent -Container [容器名称] -Context [存储账号上下文]

文件下载——下载容器中的文件到本地:

Get-AzureStorageBlobContent -Blob [容器中待下载的文件名称] -Destination [本地目标路径] -Container [容器名称] -Context [存储账号上下文]

至此,基本的网盘功能都已经实现了。不可否认,这的确是“only for technical guy”的。别忘了,咱可是玩技术的,基于Windows Azure的存储服务开发一个专用的网盘系统是不是变得很简单了?

再来点高级的功能——网盘文件分享。

Windows Azure Blob存储上的每一个文件都会对应一个唯一的URL,例如:[https://sa4blobtest.blob.core.chinacloudapi.cn/c001/demo-file.html]。理论上,把这个URL复制到浏览器中,就可以打开或者下载对应的文件了。但是,容器的权限默认是:Private,所以也就无法通过URL来分享文件了。除非我们把整个容器的权限设置为:Public Container。说句题外话,Public Container非常适合发布网站的静态内容,例如:css文件,JavaScript文件,图片等。并且还有很重要的一点:通过Windows Azure Blob发布的静态文件可以使用Windows Azure的CDN分发服务!这个的确是Windows Azure存储服务的一大特色。

言归正传,我们来看看如何使用Windows Azure存储服务来实现文件分享。

创建一个SAS key

New-AzureStorageBlobSASToken -Context [存储账号上下文] Container [容器名称] -Blob [容器中待分享的文件名] -Permission r -FullUri

上述命令执行后,会生成一个链接,例如:[https://sa4blobtest.blob.core.chinacloudapi.cn/c001/t01.css?sv=2015-02-21&sr=b&sig=FKeZ8ecCNXLSOOry90R%2FoiDUJwvn7W%2Fe
w6%2BNfbAw6XM%3D&se=2015-11-17T09%3A47%3A05Z&sp=r]。这个链接就是分享链接!配合[-StartTime]和[-ExpiryTime]参数,还可以为分享链接设置有效期。是不是很感动?沿袭了微软开发工具的优良传统,时时处处为开发人员着想。

到此为止,我们成功的把Windows Azure存储服务打造成为一个安全,高效,大容量的网盘。至于操作界面的用户体验嘛,让我们一起发挥想象力和创造力来慢慢完善吧。

玩转Windows Azure存储服务——网盘的更多相关文章

  1. 玩转Windows Azure存储服务——高级存储

    在上一篇我们把Windows Azure的存储服务用作网盘,本篇我们继续挖掘Windows Azure的存储服务——高级存储.高级存储自然要比普通存储高大上的,因为高级存储是SSD存储!其吞吐量和IO ...

  2. 解读 Windows Azure 存储服务的账单 – 带宽、事务数量,以及容量

    经常有人询问我们,如何估算 Windows Azure 存储服务的成本,以便了解如何更好地构建一个经济有效的应用程序.本文我们将从带宽.事务数量,以及容量这三种存储成本的角度探讨这一问题. 在使用 W ...

  3. Windows Azure文件共享服务--File Service

    部署在Windows Azure上的虚拟机之间如何共享文件?例如:Web Server A和Web Server B组成负载均衡集群,两个服务器需要一个共享目录来存储用户上传的文件.通常,大家可能首先 ...

  4. 了解 Windows Azure 存储计费 – 带宽、事务和容量

     我们收到关于如何估算 Windows Azure存储成本,以便了解如何更好地构建一个经济有效的应用程序的问题.在本文中,我们将从带宽.事务和容量这三种存储成本的角度探讨这一问题. 使用 Wind ...

  5. Windows Azure 存储的冗余存储选项和只读访问跨地域冗余存储

    我们很高兴地宣布,现在我们使客户可以获得对数据更高的读取可用性.该预览功能称为"只读访问- 跨地域冗余存储(RA-GRS)",使客户可以在存储帐户主要区域无法读取数据时,通过跨 ...

  6. SOSP 文档 - Windows Azure 存储:具有强一致性的高可用性云存储服务

    之前,我们在第 23 届 ACM操作系统原理研讨会 (SOSP)上发布了一篇文章,其中介绍了 Windows Azure存储的内部详细信息. 您可以在此处找到该文章.此次大会还发布了一段视频讲话( ...

  7. Windows Azure存储容器私有,公共容器,公共Blob的区别

    当我们在Windows Azure中创建或编辑存储的容器时,需要选择访问类型,本文将描述一下这三个选项的区别. 1. 私有: 默认选项,顾名思义,用户不能通过URL匿名进行访问容器或容器内的任何Blo ...

  8. 微软开放技术开发了适用于 Windows Azure 移动服务的开源 Android SDK

     发布于 2014-02-10 作者 陈 忠岳 为进一步实现连接微软与非微软技术的目标,微软开放技术有限公司开发了适用于 Windows Azure 移动服务的 Android SDK,由Scot ...

  9. 微软开放技术发布开源 Jenkins 插件以将 Windows Azure Blob 服务用的开作存储库

     发布于 2014-02-10 作者 陈 忠岳 持续集成 (CI) 的历史源远流长, 其宗旨在于软件团队在敏捷环境中不断将他们的工作整合为持续构建.管理 CI 进程的工具已存在一段时间.过去几年中 ...

随机推荐

  1. Hibernate(一)__简介

    一. hibernate是什么 (一)hibernate 是一个orm框架,orm (object relation mapping) 对象关系映射框架 o object -> 业务层(只对对象 ...

  2. 附7 turbine

    一.作用 聚集同一个微服务的相同的commandKey.Threadpool.commandGroupKey数据进行聚合 二.配置 1.集群(cluster)(turbine聚集数据的粒度) turb ...

  3. bootstrap的下拉框在firefox界面不友好的处理

    http://output.jsbin.com/titaki 以上这个链接在firefix浏览器打开就会发现里面有个小容器,而且下拉按钮样式跟不友好 上谷歌查了一下 1.小容器可以利用select:p ...

  4. CSS3 模块

    CSS3 被划分为模块. 其中最重要的 CSS3 模块包括: 选择器 框模型 背景和边框 文本效果 2D/3D 转换 动画 多列布局 用户界面

  5. 浅谈float浮动

    float大概是css3以前网页布局里最常用的一个属性了,经常看到一言不合就浮动的代码,就一起来深入挖掘一下这个一半天使一半魔鬼的属性吧. 本文是读张鑫旭大神慕课网float视频后的一些总结及一些拓展 ...

  6. SharePoint 2013必备组件离线包安装:AppFabric无法安装问题解决

    由于没有网络,无法使用sharepoint2013的安装必备软件的在线下载向导安装,当要安装 SharePoint 2013 的服务器与 Internet 隔离时,通常需要从脱机位置安装必备组件.即使 ...

  7. android 图片加载库 Glide 的使用介绍

    一:简介 在泰国举行的谷歌开发者论坛上,谷歌为我们介绍了一个名叫 Glide 的图片加载库,作者是bumptech.这个库被广泛的运用在google的开源项目中,包括2014年google I/O大会 ...

  8. iOS 用webView加载后台返回的HTML数据

    返回数据: <p><b>\U516c\U53f8\U7b80\U4ecb</b></p><p>    \U5584\U76c8\U7ba1\ ...

  9. iOS---检测系统通知开关状态

    if (iOS8) { //iOS8以上包含iOS8 if ([[UIApplication sharedApplication] currentUserNotificationSettings].t ...

  10. postgresql function 返回 select

    pq函数功能很强大,我打算把统计的功能都放在数据库端.优势让运算离数据更近一些,缺点无法服用代码.牺牲了django的灵魂性,项目必须依赖postgresql. 项目中,希望实现返回select内容 ...