Windows azure 上将Legcay IO操作轻松切换到Blob
您准备迁移到azure平台上的程序有大量的类似于File.()…的操作?
不用着急,MS发布的 Microsoft.WindowsAzure.CloudDrive 提供的 API,即可方便的切换到Blob中。
假设您有一个FileUpload的控件,您可能有这样的代码:
File.WriteAllBytes(string.Format("{0}\\{1}", Server.MapPath("~\Data"), fileName), this.FileUpload1.FileBytes);
切换到 Blob? 使用 CloudDrive 提供的API,只需做少量的修改即可。
引用 Microsoft.WindowsAzure.CloudDrive
1. 修改 WebRole
public class WebRole : RoleEntryPoint{public static string DriveLetter { get; private set; }CloudDrive myCloudDrive;public override bool OnStart(){CloudStorageAccount.SetConfigurationSettingPublisher((configName, configSetter) =>{configSetter(RoleEnvironment.GetConfigurationSettingValue(configName));RoleEnvironment.Changed += (sender, arg) =>{if (arg.Changes.OfType<RoleEnvironmentConfigurationSettingChange>().Any((change) => (change.ConfigurationSettingName == configName))){if (!configSetter(RoleEnvironment.GetConfigurationSettingValue(configName))){RoleEnvironment.RequestRecycle();}}};});RoleEnvironment.Changing += RoleEnvironmentChanging;return base.OnStart();}private void RoleEnvironmentChanging(object sender, RoleEnvironmentChangingEventArgs e){// If a configuration setting is changingif (e.Changes.Any(change => change is RoleEnvironmentConfigurationSettingChange)){// Set e.Cancel to true to restart this role instancee.Cancel = true;}}public override void OnStop(){myCloudDrive.Unmount();base.OnStop();}public override void Run(){string containerName = "drives";string blobName = "mydrive.vhd";CloudStorageAccount storageAccount = CloudStorageAccount.FromConfigurationSetting("DiagnosticsConnectionString");
LocalResource localCache = RoleEnvironment.GetLocalResource("InstanceDriveCache");CloudDrive.InitializeCache(localCache.RootPath, localCache.MaximumSizeInMegabytes);CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();blobClient.GetContainerReference(containerName).CreateIfNotExist();// create Cloud Drive myCloudDrive = storageAccount.CreateCloudDrive(blobClient.GetContainerReference(containerName).GetPageBlobReference(blobName).Uri.ToString());try{myCloudDrive.Create(32);}catch (CloudDriveException ex){}DriveLetter = myCloudDrive.Mount(0, DriveMountOptions.Force);base.Run();}} 2. ServiceDefinition 中增加了缓存的设置[可选]
<ServiceDefinition name="CloudWebDemo" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition">
<WebRole name="WebRole1">
<InputEndpoints>
<InputEndpoint name="HttpIn" protocol="http" port="80" />
</InputEndpoints>
<ConfigurationSettings>
<Setting name="DiagnosticsConnectionString" />
</ConfigurationSettings>
<LocalResources>
<LocalStorage name="InstanceDriveCache" cleanOnRoleRecycle="false" sizeInMB="100" />
</LocalResources>
</WebRole>
</ServiceDefinition>
3. 修改文件操作的代码
File.WriteAllBytes(string.Format("{0}\\{1}", , fileName), this.FileUpload1.FileBytes);
转载于:https://www.cnblogs.com/ginohuo/archive/2010/05/03/1726509.html
Windows azure 上将Legcay IO操作轻松切换到Blob相关推荐
- day10-协程遇到IO操作自动切换
一.概述 感觉确实用着比generator还简单了呢,但好像还没有解决一个问题,就是遇到IO操作,自动切换,对不对?所以我们接下来就说说如何遇到IO就切换,不得不提到一个模块Gevent. Geven ...
- ubuntu windows双系统默认启动项轻松切换
一般ubuntu+windows双系统的默认启动项都是-----ubuntu,并且固定不变.这样对于经常使用windows的人会很不方便,本文将让系统默认启动项可以轻松切换,并顺便减少启动默认系统的等 ...
- python之协程与IO操作
协程 协程,又称微线程,纤程.英文名Coroutine. 协程的概念很早就提出来了,但直到最近几年才在某些语言(如Lua)中得到广泛应用. 子程序,或者称为函数,在所有语言中都是层级调用,比如A调用B ...
- Windows Azure虚拟机概览
Windows Azure自从2012预览版开始添加了新的虚拟机功能.作为这个新功能的一部分,Windows Azure发布了一个新版本的Windows Azure管理门户,这个门户在原有的基础上增加 ...
- Windows Azure Storage (1) Windows Azure Storage Service存储服务
<Windows Azure Platform 系列文章目录> 如果读者使用的是国内由世纪互联运维的Azure China服务,请参考笔者的博文Azure China (4) 管理Azur ...
- 云计算 第四章 微软云计算 Windows Azure
文章目录 第四章 微软云计算 Windows Azure 4.1 微软云计算平台 1.传统的企业和用户在开发和部署自己的应用程序主要有两种方式 2.微软的云计算技术 3.Windows Azure平台 ...
- Windows Azure公有云服务相关方案
http://www.cnblogs.com/sennly/p/4139675.html 1.公有云平台服务简介 Windows Azure 是一个灵活而开放的云平台,通过该平台,您可以在数据中心快速 ...
- 现实世界的 Windows Azure:HRG将应用程序扩展到移动设备,削减80 %的启动成本
作为现实世界 Windows Azure 系列的一部分,我们联系了Hogg Robinson Group (HRG)的技术和产品开发主任Paul Saggar, 了解关于如何如何在Windows Az ...
- 现宣布Windows Azure中SQL数据同步的增强功能
我们很高兴宣布SQL数据同步服务迎来了更新,现可以在所有Windows Azure数据中心中操作.过去的两次更新(六月.八月)除了为预览版带来一般可靠性的改进外,还带来了如下的增强功能: · ...
最新文章
- Oracle Row cache lock图解
- Java程序员应该了解的10个设计原则
- SIGGRAPH 2021丨OPPO与南大提出双流网络:仅输入单张图片,就能“看”出物体材质...
- python e_pythone函数基础(8)内置函数学习
- 7-33 出生年 (15 分)
- 如何在 Mac 上进行屏幕录制?
- php嗅探视频地址,用PHP嗅探youku视频的真实地址!
- ***测试执行标准(Penetration Testing Execution Standard:PTES)
- C语言从键盘输入1605,山东理工大学ACM平台题答案关于C语言 1605 Balloon Comes!
- Linux下进行rar文件解压和压缩
- CPU设计——RISC-V指令集
- OpenCV开发笔记(六十四):红胖子8分钟带你深入了解SURF特征点(图文并茂+浅显易懂+程序源码)
- 流程图,梳理基本流和备选流,编写测试用例
- 制作商品详情页面案例
- ISO、快门、光圈、曝光
- 在CentOS7上源码安装MongoDB 3.2.7
- Python:K折交叉验证,将数据集分成训练集与测试集
- 常用的数字正则表达式(含小数)
- visio拉动线条总是保持直线状态
- vscode同时编辑多行,插入递增数字
热门文章
- 脉冲神经网络_【强基固本】脉冲神经网络(SNN)
- iOS 性能优化-启动优化、main函数之前优化-二进制重排
- web前端学习day_03:JavaScript:如何使用/ 语法/ 方法/ NaN/ js对象分类/ BOM浏览器相关/ 事件/ DOM文档对象模型
- Xamarin.Forms的ActivityIndicator和ProgressBar比较
- Visual Studio提示Bonjour backend初始化失败
- 域控制器升级的先决条件验证失败新建_快应用开发工具升级v1.4.0
- linux内核更新/修补程序,Ubuntu 18.04.3 LTS无需重启即可轻松修补Linux内核
- webserver获取http请求方的服务器ip_光大科技基础设施团队剖析HTTP协议
- webview键盘自适应_苹果笔记本显示器键盘专利曝光:单按键可重新配置
- AAAI第二届“AI诺奖”出炉,百万美元奖金颁给批判黑箱、推广可解释AI的杜克大学女教授...