Windows Azure Storage (10) Windows Azure 上的托管服务CDN (下) Hosted Service
《Windows Azure Platform 系列文章目录》
使用Blob Service CDN需要将所有需要缓存的文件放入Blob Service中,然后设置CDN指向这个Storage Service。但是大部分情况下,特别是在进行网站开发的情况下,使用的图片一般都是放在网站目录下而非Blob Service中。虽然可以将这些文件迁移到Blob中,但是在开发的时候还是需要使用本地文件,实际操作起来还是比较费时费力的。另外,基于Blob Service的CDN只能缓存静态文件,如果应用程序需要缓存一些动态的内容,比如缓存某个页面的输出该怎么办呢?为了解决上述问题,Windows Azure平台提供了基于Hosted Service的CDN服务。
我将会给大家介绍如何使用Windows Azure平台上的Hosted Service。
首先,我们打开Visual Studio 2012,新建一个Cloud Solution,命名为AzureCDN。添加一个ASP.NET的Web Role。
然后在Web Role Project下增加,添加一个名为"CDN"的文件夹(大小写不敏感)。在这个文件夹里我们先增加1张图片Moon,然后增加文件夹msft,在msft文件夹里增加3张图片。
请注意:Windows Azure Hosted CDN服务将使“/cdn”文件夹下所有内容启用CDN。我们必须把所有需要CDN服务的内容(图片,css,文档等)复制到cdn文件夹里。
然后我们打开项目中的Default.aspx页面。添加2个image控件:分别为imgBlob和imgCDN。图片的来源分别指向Azure Storage Blob中和CDN Url。
然后我们在Default.aspx.cs的Page_Load函数里,增加如下代码:
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using Microsoft.WindowsAzure.ServiceRuntime;namespace WebRole1 {public partial class _Default : System.Web.UI.Page{protected void Page_Load(object sender, EventArgs e){imgBlob.ImageUrl = RoleEnvironment.GetConfigurationSettingValue("imgBlobURL");imgCDN.ImageUrl = RoleEnvironment.GetConfigurationSettingValue("imgCDNURL");}} }
主要的功能是:从ServiceConfiguration.cscfg里读取相关的图片超链接信息,然后加载到imgBlob和imgCDN控件。
然后我们修改WebRole.cs中的代码,具体内容如下:
using System; using System.Collections.Generic; using System.Linq; using Microsoft.WindowsAzure; using Microsoft.WindowsAzure.Diagnostics; using Microsoft.WindowsAzure.ServiceRuntime; using System.Diagnostics;namespace WebRole1 {public class WebRole : RoleEntryPoint{public override bool OnStart(){// For information on handling configuration changes// see the MSDN topic at http://go.microsoft.com/fwlink/?LinkId=166357.// 当用配置文件中ConfigurationSettings时必须调用CloudStorageAccount.SetConfigurationSettingPublisher// 来说明当配置文件在发布后被更改时将采取何种操作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 = false;}}} }
这些代码的主要功能是:如果CSCFG发生变化的时候将e.Cancel设置为False,不需要重启Web Role。
然后我们修改CSCFG的配置信息,增加imgCDNURL和imgBlobURL,Value分别是图片的http website。我使用上一章已经上传成功的图片WindowsAzure.png。
注意:如果对读取Azure配置文件不熟悉的网友,请参考我的这篇文章Windows Azure Platform (十四) Configuration的变更和通知机制
然后我们使用Visual Studio发布这个Azure Solution,服务名称和Url都使用LeiAzureCDN,WebSite的发布过程略。
发布成功后,我们浏览发布成功的Azure Website:http://leiazurecdn.cloudapp.net/。图片加载成功,效果如下:
实际上加载的2张图片都是来自于Azure Blob, url为 http://threestone.blob.core.windows.net/gallery/WindowsAzure.png,我们暂时还未使用Azure Hosted Service CDN服务。
那我们开始配置Azure Hosted Service CDN的功能。首先登陆Windows Azure Management Portal:
然后我们选择"CDN"-->选中"LeiAzureCDN"(我们之前创建的托管站点)-->选择"新建终结点":
在弹出的"新建CDN终结点里",
1.启用CDN:启用或不启用CDN。
2.HTTPS:如果我们需要使用HTTPS连接,选中它。
3.查询字符串:如果我们缓存托管服务内容或使用查询字符串来指定被恢复的内容,选中它。
CDN新建终结点成功后如下图。请注意观察LeiAzureCDN的CDN HTTP终结点地址是http://az274005.vo.msecnd.net
等待20分钟......让CDN在全世界传播
(20分钟后...)我们使用已经发布成功的LeiAzureCDN的HTTP终结点是:http://az274005.vo.msecnd.net
请注意观察AzureCDN这个Cloud Solution Web Role根目录下的CDN的文件夹内容:
- 发布成功的CDN url是http://[yourcdnurl]/[yourfilename]。
- 我们发布成功的CDN url是http://az274005.vo.msecnd.net。另外moon.jpg是在CDN根目录下,那真正的url就是http://az274005.vo.msecnd.net/moon.jpg
- 对于CDN\msft里的图片来说,真正的url就是http://[YourCdnUrl]/[YourFileName]。对于msft里的WindowsAzure.png来说,CDN URL就是http://az274005.vo.msecnd.net/WindowsAzure.png
我们修改AzureCDN的配置部署,修改imgCDNURL的value为CDN URL,我们修改加载CDN\msft\wp7.jpg的图片
然后我们用IE重新打开http://leiazurecdn.cloudapp.net/,页面加载的时候会重新读取最新的cscfg内容:
转载于:https://www.cnblogs.com/threestone/archive/2012/06/11/2542076.html
Windows Azure Storage (10) Windows Azure 上的托管服务CDN (下) Hosted Service相关推荐
- Windows Azure Storage (4) Windows Azure Storage Service存储服务之Blob Share Access Signature
<Windows Azure Platform 系列文章目录> 如果读者使用的是国内由世纪互联运维的Azure China服务,请参考笔者的博文Azure China (4) 管理Azur ...
- Windows Azure Storage (3) Windows Azure Storage Service存储服务之Blob详解(中)
<Windows Azure Platform 系列文章目录> 如果读者使用的是国内由世纪互联运维的Azure China服务,请参考笔者的博文Azure China (4) 管理Azur ...
- Windows Azure Storage (1) Windows Azure Storage Service存储服务
<Windows Azure Platform 系列文章目录> 如果读者使用的是国内由世纪互联运维的Azure China服务,请参考笔者的博文Azure China (4) 管理Azur ...
- Windows Azure Storage (23) 计算Azure VHD实际使用容量
<Windows Azure Platform 系列文章目录> 对于A系列和D系列的虚拟机来说,使用的是普通存储. 普通存储的存储资源,是按照每GB每月计费的.Microsoft Azur ...
- Windows Azure Storage (6) Windows Azure Storage之Table
<Windows Azure Platform 系列文章目录> 最近想了想,还是有必要把Windows Azure Table Storage 给说清楚. 1.概念 Windows Azu ...
- Windows Azure Storage (19) 再谈Azure Block Blob和Page Blob
<Windows Azure Platform 系列文章目录> 请读者在参考本文之前,预习相关背景知识:Windows Azure Storage (1) Windows Azure St ...
- Azure Table storage 基本用法 -- Azure Storage 之 Table
Azure Storage 是微软 Azure 云提供的云端存储解决方案,当前支持的存储类型有 Blob.Queue.File 和 Table,其中的 Table 就是本文的主角 Azure Tabl ...
- 将数据从 SQL Server 导入 Azure Storage Table
点击上方蓝字关注"汪宇杰博客" 导语 最近有个需求要将数据存储从 SQL Server 数据库切换到 Azure Storage 中的 Table.然而不管是 SSMS 还是 Az ...
- Azure Blob Storage 基本用法 -- Azure Storage 之 Blob
Azure Storage 是微软 Azure 云提供的云端存储解决方案,当前支持的存储类型有 Blob.Queue.File 和 Table. 笔者在<Azure Table storage ...
最新文章
- 腾讯优图10篇AAAI论文解析,涉及数学速算批改、视频识别和语义分割 | 附下载...
- CCBPM工作流引擎的消息机制与设计
- myeclipse安装svn插件的多种方式
- occam‘s razor
- php 队列取并集,PHP实现对数组简单求交集,差集,并集功能示例
- 直播视频发布:Windows上的Linux容器和Azure混合云中的Kubernetes(k8s)
- 【manacher】Strings in the Pocket
- vscode gcc debug dbg gdb c cpp c++ cuckoo monitor
- 如何优雅的实现一个靠谱的RTSP播放器?
- installshield 脚本 在卸载过程执行_Linux下运行Jmeter脚本
- mysql用foreach遍历,ForEach-Object循环遍历MySql DataTable第一行空白
- iOS开发网络篇—GET请求和POST请求(转)
- 液晶显示器模糊的照片
- paip.提升用户体验---搜索功能设计
- SLAM专题(8)卡尔曼滤波和扩展卡尔曼滤波 原理与应用
- speedoffice(Excel)如何取消隐藏的工作表
- Adobe Photoshop 2021 22.4.2 绿色精简版
- 全网最详细教程整理,Python自动化操作PPT总结归纳
- android mixpanel可视化埋点框架解析
- 对话系统-“任务型”多轮对话(二):对话状态追踪(DST)【基于规则;基于模型】【输入:当前意图和槽值对+历史槽值对;输出:State(槽值对集合)或State Vector 】【为DP做数据准备】