Windows Azure 计算服务中的服务配置

来源:互联网 发布:燕达医院招聘网络咨询 编辑:程序博客网 时间:2024/05/01 18:25

       服务配置主要用来描述一些服务模型的补充信息,尤其是一些在服务部署后有可能发生变化信息,如需要实例数目等。这些信息被统一定义在服务配置文件ServiceConfiguration.cscfg中。服务配置文件需要与服务定义文件配合使用,它与后者最大的区别在于,用户可以在服务发布以后在线修改配置文件,而不需要重启实例和重新打包部署。Windows Azure内部有一个事件触发机制,当监控到服务配置文件发生变化时,Fabric控制器会根据修改内容自动对服务的部署进行相应的调整。

      下面是一些常见的包含在服务配置文件中的信息。

       1、服务角色实例的数量;

       2、虚拟机操作系统的类型和版本;

       3、服务定义文件中自定义设置的初始值;

       4、服务定义文件中定义的证书和指纹;

       5、VM Role的VHD镜像名称等。

       服务配置文件ServiceConfiguration.cscfg在发布服务时独立存在,因此也非常方便对其进行修改、在Windows Azure管理门户网站中,用户可以通过配置按钮上传一个新的服务配置文件或直接编辑XML文件。

          一、ServiceConfiguration.cscfg文件

<?xml version="1.0" encoding="utf-8"?><ServiceConfiguration serviceName="HelloCloud" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceConfiguration" osFamily="1" osVersion="*">  <Role name="WebRole1">    <Instances count="1" />    <ConfigurationSettings>      <Setting name="Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString" value="UseDevelopmentStorage=true" />    </ConfigurationSettings>  </Role></ServiceConfiguration>


         在上面的代码中,虚拟机中的操作系统类别被设置为家族1,即与Windows Server 2008 SP2保持兼容的Windows Azure Guest OS 1.X;其版本设置为“*”,也就是由Windows Azure来进行自动更新。

         用户可以通过<Instances>元素中的count属性来设置对应实例的个数。这个属性非常重要,因为服务的水平扩展能力主要由这个设置决定。当部署的服务访问量超过原先的涉及容量时就需要通过增加这个实例数量来进行计算能力的扩展。

        二、服务配置的应用

        传统的ASP.NET应用也有一个基于XML格式的配置文件Web.config,这个配置文件会包含模块的加载信息、安全设置、会话设置等多种信息。而且Web.config文件也可以通过<appSettings>元素来自定义一些变量极其初始化值,如下所示。

<appSetting><addkey="UserCustomSetting1" value="Hello Windows Azure!"/></appSetting>

       当Windows Azure 服务项目中包含一个基于ASP.NET Web Role时,这个 Web Role实现本身也是一个ASP.NET的Web应用。这样开发人员就面临一个选择:把自定义的变量和初始化值是放在ASP.NET应用自己的Web.config 文件中,还是把它们分开放在服务定义文件和服务配置文件中呢?一个推荐的做法是把变量的定义放在Windows Azure的服务定义文件中,并且把变量的初始化值放在服务配置文件中,而不是把他们定义在ASP.NET应用的配置文件中。也就是说,在ServiceDefinition.csdef中定义变量如下:

<ConfigurationSettings><Setting name="UserCustomSetting1"></ConfigurationSettings>

      然后在ServiceConfiguration.cscfg中初始化如下:

<ConfigurationSettings><Setting name="UserCustomSetting1" value ="Hello Windows Azure!"/></ConfigurationSettings>

        这么做的原因主要有两个:一是服务配置文件可以被动态修改,而Web.config文件会作为服务代码的一部分打包,因此服务发布之后无法在线修改;二是一般的Web Role实例会有多个,因此其上的应用程序代码会被部署在多个实例上面,也就是说,ASP.NET应用的配置文件也会有多分拷贝,因此更容易维护和管理。

        关于服务器配置的应用一般有以下几个推荐的做法。

        1、把存储账户的名称和证书信息放在配置文件中。这么做可以比较方便地进行存储账户切换:同样使得用户可以更换证书信息而不需要停止已发布的服务。开发测试环境的证书与生产环境的一般是不同的,而且证书也有时效期限的问题。

        2、把日志的选项定义在配置文件中。因为在不同的运行阶段可能需要不同的日志级别,因此把他们定义在配置文件中可以方便更改。

        3、也可以为不同的开发测试阶段提供不同的配置文件,比如一个版本的配置文件是给生产环境使用的,一个是给临时测试环境使用的等。生产环境和测试环境往往会使用不同的数据库环境,因此在不同的配置文件中可以设置不同的数据库链接字符串。

       总而言之,由于服务配置文件是可以被动态修改的,因此我们可以灵活地应用它来充分发挥这个特点。


  


原创粉丝点击