《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相关推荐

  1. Windows Azure Storage (4) Windows Azure Storage Service存储服务之Blob Share Access Signature

    <Windows Azure Platform 系列文章目录> 如果读者使用的是国内由世纪互联运维的Azure China服务,请参考笔者的博文Azure China (4) 管理Azur ...

  2. Windows Azure Storage (3) Windows Azure Storage Service存储服务之Blob详解(中)

    <Windows Azure Platform 系列文章目录> 如果读者使用的是国内由世纪互联运维的Azure China服务,请参考笔者的博文Azure China (4) 管理Azur ...

  3. Windows Azure Storage (1) Windows Azure Storage Service存储服务

    <Windows Azure Platform 系列文章目录> 如果读者使用的是国内由世纪互联运维的Azure China服务,请参考笔者的博文Azure China (4) 管理Azur ...

  4. Windows Azure Storage (23) 计算Azure VHD实际使用容量

    <Windows Azure Platform 系列文章目录> 对于A系列和D系列的虚拟机来说,使用的是普通存储. 普通存储的存储资源,是按照每GB每月计费的.Microsoft Azur ...

  5. Windows Azure Storage (6) Windows Azure Storage之Table

    <Windows Azure Platform 系列文章目录> 最近想了想,还是有必要把Windows Azure Table Storage 给说清楚. 1.概念 Windows Azu ...

  6. Windows Azure Storage (19) 再谈Azure Block Blob和Page Blob

    <Windows Azure Platform 系列文章目录> 请读者在参考本文之前,预习相关背景知识:Windows Azure Storage (1) Windows Azure St ...

  7. Azure Table storage 基本用法 -- Azure Storage 之 Table

    Azure Storage 是微软 Azure 云提供的云端存储解决方案,当前支持的存储类型有 Blob.Queue.File 和 Table,其中的 Table 就是本文的主角 Azure Tabl ...

  8. 将数据从 SQL Server 导入 Azure Storage Table

    点击上方蓝字关注"汪宇杰博客" 导语 最近有个需求要将数据存储从 SQL Server 数据库切换到 Azure Storage 中的 Table.然而不管是 SSMS 还是 Az ...

  9. Azure Blob Storage 基本用法 -- Azure Storage 之 Blob

    Azure Storage 是微软 Azure 云提供的云端存储解决方案,当前支持的存储类型有 Blob.Queue.File 和 Table. 笔者在<Azure Table storage ...

最新文章

  1. 腾讯优图10篇AAAI论文解析,涉及数学速算批改、视频识别和语义分割 | 附下载...
  2. CCBPM工作流引擎的消息机制与设计
  3. myeclipse安装svn插件的多种方式
  4. occam‘s razor
  5. php 队列取并集,PHP实现对数组简单求交集,差集,并集功能示例
  6. 直播视频发布:Windows上的Linux容器和Azure混合云中的Kubernetes(k8s)
  7. 【manacher】Strings in the Pocket
  8. vscode gcc debug dbg gdb c cpp c++ cuckoo monitor
  9. 如何优雅的实现一个靠谱的RTSP播放器?
  10. installshield 脚本 在卸载过程执行_Linux下运行Jmeter脚本
  11. mysql用foreach遍历,ForEach-Object循环遍历MySql DataTable第一行空白
  12. iOS开发网络篇—GET请求和POST请求(转)
  13. 液晶显示器模糊的照片
  14. paip.提升用户体验---搜索功能设计
  15. SLAM专题(8)卡尔曼滤波和扩展卡尔曼滤波 原理与应用
  16. speedoffice(Excel)如何取消隐藏的工作表
  17. Adobe Photoshop 2021 22.4.2 绿色精简版
  18. 全网最详细教程整理,Python自动化操作PPT总结归纳
  19. android mixpanel可视化埋点框架解析
  20. 对话系统-“任务型”多轮对话(二):对话状态追踪(DST)【基于规则;基于模型】【输入:当前意图和槽值对+历史槽值对;输出:State(槽值对集合)或State Vector 】【为DP做数据准备】

热门文章

  1. 1814: 一元三次方程求解
  2. 会ps会php,学会ps可以做什么
  3. 一图看懂钉钉宜搭线上发布会
  4. 居然之家:核心业务系统全面上云,采用PolarDB替代传统商业数据库
  5. 10倍性能提升!DLA SQL推出基于Alluxio的数据湖分析加速功能
  6. 还在自建代码仓库?阿里云的这款企业级代码管理工具免费、还香!
  7. 低功耗智能硬件开源平台-FireBLE开发板
  8. [转]Oracle执行计划的相关概念
  9. MySQL升级后 MySQL 5.7 时间不兼容问题
  10. 13.Java为什么不支持多继承