存储服务是除了计算服务之外最重要的云服务之一。说到云存储,大家可以想到很多产品,例如: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. svg-filter高斯模糊

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

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

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

  3. Squire – 简洁的 HTML5 富文本编辑器

    Squire 是一个简洁的 HTML5 富文本编辑器,它提供了强大的跨浏览器的标准化,超级轻巧灵活.它是建立在现在和未来并作为研究,因此并不支持那些古老的浏览器. 在线演示      源码下载 您可能 ...

  4. 使用 SVG 动画实现弹性的页面元素效果

    Codrops 分享了一些给SVG元素加上弹性动画的灵感.实现的思路是把一个SVG元素整合成一个组件,然后从一个路径弹性动画到另一个.这种效果可以应用到像菜单,按钮或其它元素,使得交互更有趣,看起更原 ...

  5. React入门--------组件的生命周期

    Mounting/组件挂载相关: componentWillMount componentDidMount Updating/组件更新相关: componentWillReceiveProps sho ...

  6. SubSonic2.2框架的使用方法和配置说明

    网上.net ORM框架也不少,但是我感觉这个框架配置很简单的,前几年貌似用的人很多,现在好像用得比较少了,随着它官方的升级现在已经到3.0了, 并且采用T4 模板生成的方式,代码量好像减少了.不过我 ...

  7. Mac下的Parallel Windows忘记密码怎么办?

    Mac机上安装了Parallel Windows,日久年深不登录结果忘记了登录密码,百爪挠心,想破脑壳试了n个密码都不行,放了一个多月也没想起来. 今天没事网上溜溜,肯定也有和我同病相怜的弟兄,果然, ...

  8. 安装pods 遇到的坑

    1.  ERROR:  While executing gem ... (Errno::EPERM) Operation not permitted - /usr/bin/pod 苹果系统升级 OS ...

  9. 【读书笔记】iOS网络-保护网络传输

    一,验证服务器通信. 二,HTTP认证. 手机银行应用有两种认证模式:标准验证与快速验证.标准验证只是提示用户输入用户名与密码,而快速验证则让用户注册设备,然后使用PIN进行验证,每次验证时无需用户名 ...

  10. 网络邂逅&网络异步请求

    什么是卡,网络慢,且你只能等着它加载完不能做别的事 这里便引申出网络异步请求的概念 #import "ViewController.h" @interface ViewContro ...