开发者社区> zting科技> 正文

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 changing
            if (e.Changes.Any(change => change is RoleEnvironmentConfigurationSettingChange))
            {
                // Set e.Cancel to true to restart this role instance
                e.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的文件夹内容:

 

我们修改AzureCDN的配置部署,修改imgCDNURL的value为CDN URL,我们修改加载CDN\msft\wp7.jpg的图片

 然后我们用IE重新打开http://leiazurecdn.cloudapp.net/,页面加载的时候会重新读取最新的cscfg内容:

  

  

  

 

分类: Azure Storage

本文转自Lei Zhang的博客博客园博客,原文链接:http://www.cnblogs.com/threestone/archive/2012/06/11/2542076.html,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
CDN产品介绍——CDN加速服务有哪些功能及限制
CDN产品介绍——CDN加速服务有哪些功能及限制自制脑图
28 0
CDN产品介绍——CDN加速服务
CDN产品介绍——CDN加速服务自制脑图
22 0
阿里云 CDN 服务架构及应用场景|学习笔记
快速学习阿里云 CDN 服务架构及应用场景
187 0
CDN 服务功能介绍|学习笔记
快速学习 CDN 服务功能介绍
54 0
CDN 网站部署全站加速服务
CDN 网站部署全站加速服务
131 0
Cocoapods1.8版本以后使用CDN服务的方法
1.8版本的发布舍弃了原始完整克隆的Specs仓库改用CDN服务,查找资料后,我们也果断的尝试使用了CDN,pod install 和 pod update 速度都很快,推荐使用。以下是步骤:
294 0
为站点添加 CDN 服务
本篇主要叙述如何为站点配置 cdn 加速服务,供应商是又拍云
2172 0
程序员福利:常用的 JavaScript 库 CDN 加速服务
CDN 一般比你的网站快很多,可以在一定程度上加速访问,可以在一定程度上节省服务器流量,浏览器会缓存同一个地址的JS,因此,使用同一个 CDN 的人越多,加速效果越明显,为你的产品提供最佳的用户体验。
1181 0
CDN 流媒体服务实时分析 Elasticsearch 实践—Elastic Stack 实战手册
发挥 Elastic Stack 在日志和实时数据分析计算领域的一些优势,对流媒体服务这样规模较大、实时性要求偏高,且分析、业务探索流程要求灵活的业务是一个比较百搭的选择。
391 0
阿里云CDN+点播服务助力云学堂全面提升用户在线学习体验
CDN将云学堂的点播视频资源缓存至阿里云遍布全球的加速节点上,当终端用户请求访问和获取该资源时,无需回源,系统自动调用离终端用户最近的CDN节点上已缓存的资源,提高用户访问效率和访问速度。
1622 0
+关注
文章
问答
文章排行榜
最热
最新
相关电子书
更多
构建智能化的视频系统 阿里云CDN的进化
立即下载
CDN数据化实践
立即下载
CDN技术架构
立即下载