您的位置:首页 > 其它

Windows Azure入门教学系列 (八):使用Windows Azure Drive

2014-01-13 19:00 489 查看
我们知道,由于云端的特殊性,通常情况下,对文件系统的读写建议使用Blob Storage来代替。这就产生了一个问题:对于一个已经写好的本地应用程序,其中使用了NTFS API对本地文件系统读写的代码是否需要进行完全重写以便迁移到Windows Azure平台上呢?答案是否定的。Windows Azure平台提供了Drive的功能。

在1.1版本的SDK中提供了CloudDrive类,能够将本地NTFS文件系统Mount到Blob Storage上。我们只要添加一小段代码来表明我们希望Mount Drive到Blob Storage上就能重用大部分已有的对本地文件系统访问的代码。这样,我们已有的程序能够无缝地迁移到Windows Azure上而不需要做大的改动。

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

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

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

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



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

确认完毕后启动Visual Studio 2010,新建一个Cloud Service项目并为之添加一个Web Role。

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

请在项目属性页里确认项目的Target framework的值是.NET Framework 4或.NET Framework 3.5。然后在Web Role项目中添加对C:Program FilesWindows Azure SDKv1.3refMicrosoft.WindowsAzure.CloudDrive.dll的引用。该路径为SDK默认安装路径,如果你不能在这个路径中找到Microsoft.WindowsAzure.CloudDrive.dll请从SDK安装路径中寻找。

步骤三:添加代码

删除并重新创建Default.aspx 页面,然后在Default.aspx.cs中引用命名空间:

双击代码全选

然后添加下列代码:

双击代码全选

在Default.aspx中添加下列代码:

双击代码全选

接下来在WebRole.cs中引用命名空间:

双击代码全选

然后添加下列代码:

双击代码全选

最后,修改配置文件。在Cloud Service项目的ServiceConfiguration.cscfg中添加下列配置:

双击代码全选

在ServiceDefinition.csdef中添加下列配置(注意将Sites部分的内容删除或注释掉):

双击代码全选

步骤四:观察并分析代码

步骤三中的代码中,Default.aspx.cs的代码跟普通的ASP.NET项目代码没什么区别。我们把盘符抽离出来以便迁移到Windows Azure上。Default.aspx.cs中的代码跟Windows Azure唯一相关的一句语句就是string driveLetter = WebRole.DriveLetter。我们如果把WebRole.DriveLetter替换为本机盘符该ASP.NET程序将能够正常运行。

后面的代码示范了如何Mount Drive到Blob Storage。此外我们使用了本地缓存来缓存尚未被传递到Blob Storage的文件。

通过上面的例子可以看到,只需额外添加一小段代码,已有的使用NTFS API的程序能够很方便地迁移到Windows Azure平台上。

步骤五:运行程序

运行程序。上传几个文件。如果一切顺利你将看到下图所示的结果。可以看到文件的DirectoryName为“a:”。这就是被Mount到Blob Storage上的Drive的盘符。



需要注意的是,本例中我们并未修改WebRole的实例数,因此只有1个WebRole(发布到云端后将只有一个虚拟机被使用)。如果有两个实例,并且要让两个实例共享一个”网络硬盘“的话,本例中代码将不能正常工作。因为对于同一个Blob同时只能有一个虚拟机Mount。一个可能的解决方案是额外维护一个Web Service来管理Mount和UnMount Drive。进一步的讨论超出了本教学的范围。有兴趣的读者可以下载并参考Windows Azure Cloud Drive白皮书获取信息。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐