最近一直在做项目迁移的工作,由传统的ASP.NET转到Windows Azure,这里介绍一下Azure的配置管理。在传统的WinForm或ASP.NET项目下,配置文件为web.config(app.config),而Cloud Service项目的配置文件是*.cscfg。

一个环境一个配置文件,并且提供可视化编辑。

但这里的配置有一个缺点,目前Azure SDK2.0还不支持多级配置,传统配置下的appSettings和connectionStrings在这里只有合并了。在保证对现有系统最小影响的改动下,支持Azure的配置只需要引入一个对象CloudConfigurationManager,据MSDN介绍,CloudConfigurationManager可以智能识别当前运行的环境,读取配置对象,也就说:当你的应用运行在传统的本地IIS时,他会读取Web.config;反过来,当你的应用运行在Cloud上,它会读取cscfg。

既然有了类库的支持,我们对其封装一下即可。注意在Azure配置中,appSettings和connectionStrings是同一级的,用CloudConfigurationManager.GetSetting就可以读到,当然,这时appSettings和connectionStrings的所有配置Key不能有同名的。如果CloudConfigurationManager.GetSetting获取的Value为空,说明此Key有可能是App(Web).config下面的connectionStrings节点配置。

public static class SettingsManager
{
/// <summary>
/// 获取Azure或App(Web).config下的配置节点及连接字符串
/// </summary>
/// <param name="key"></param>
/// <returns></returns>
public static string GetSetting(string key)
{
string value = CloudConfigurationManager.GetSetting(key);
if (string.IsNullOrEmpty(value))
{
if (null != ConfigurationManager.ConnectionStrings[key])
value = ConfigurationManager.ConnectionStrings[key].ConnectionString;
}
return value;
}
}

这样,一个简单的配置读取类就写好了,将系统中所有读取配置的方法统一改成SettingsManager.GetSetting(key)即可。本地开发时,可以抛弃Azure的模拟器(硬件要求高),从而选择我们较为熟悉本地IIS;Azure用于部署QA/生产环境/预部署,一种读取方式,适应两种场景。

Azure配置支持在线修改,避免使用远程桌面手动操作。

Windows Azure中的配置管理的更多相关文章

  1. Windows Azure中对映像的管理及操作

    映像是用作新虚拟机的创建模板的 .vhd 文件.映像是一个模板,因为它与已配置的虚拟机不同,没有计算机名称和用户帐户设置等特定设置.可以通过 Windows Azure 管理门户使用现有映像,或创建您 ...

  2. 使用 Puppet 在 Windows Azure 中配备 Linux 和 Windows 环境

     发布于 2013-12-11 作者 Ross Gardler 微软开放技术有限公司 (MS Open Tech) 很高兴地宣布发行新的 Windows Azure Puppet 模块.通过这个模 ...

  3. Windows Azure中的Affinity Group

    Affinity Group: (近亲组?个人认为直译为近亲组更好一些,不知道官方是怎么翻译的). 如何创建Affinity Group 1. 进入https://manage.windowsazur ...

  4. Windows Azure中文博客 Windows Azure入门教学系列 (一): 创建第一个WebRole程序

    http://blogs.msdn.com/b/azchina/ 本文转自:http://blogs.msdn.com/b/azchina/archive/2010/02/09/windows-azu ...

  5. 远程桌面连接Windows Azure中的Ubuntu虚拟机

    默认情况下,通过Windows Azure创建的ubuntu虚拟机是不能直接连接远程桌面的,只能通过SSH终端连接. 在Windows Azure Portal中创建Ubuntu虚拟机,创建完成后添加 ...

  6. Windows Azure中WebSite 网站, Cloud Service 云服务,Virtual Machine 虚拟机的比较

    在Windows Azure服务平台里,Web Site特点是: 在Windows Azure上构建高度可扩展的Web站点. 快速.轻松部署一个高度可扩展的云环境,并且可以从很小的规模开始. 使用您所 ...

  7. 在 Windows Azure 中运行SuperSocket

    关键字: Windows Azure, WorkRole, InputEndPoint, 云计算, 微软云 什么是 Windows Azure? Windows Azure 是微软的云计算平台!微软的 ...

  8. 使用windows远程桌面连接Windows Azure中的Ubuntu虚拟机

    1.创建ubuntu虚拟机,这里同样不再赘述,创建过程和创建Windows虚拟机基本一样,只是登录可以选择密钥注入或者用户名密码(为了方便我选择了用户名密码认证),创建完成后,查看虚拟机详情中的端口信 ...

  9. Hadoop 和 HDInsight:Windows Azure 中的大数据

    世界的大数据包含一个庞大而充满活力的生态系统,但一个开放源码项目上面有这一切,那就是 Hadoop 的王朝. Hadoop 是事实上的标准的分布式的数据运算.Hadoop 提供了一个 MapReduc ...

随机推荐

  1. Linux下安装、配置、启动Apache

    http://www.cnblogs.com/zhuque/archive/2012/11/03/2763352.html#

  2. 转:Servlet的url匹配以及url-pattern详解

    Servlet是J2EE开发中常用的技术,使用方便,配置简单,老少皆宜.估计大多数朋友都是直接配置用,也没有关心过具体的细节,今天遇到一个问题,上网查了servlet的规范才发现,servlet中的u ...

  3. Java API ——Collection集合类 & Iterator接口

    对象数组举例: 学生类: package itcast01; /** * Created by gao on 15-12-9. */ public class Student { private St ...

  4. mongodb group分组

    先插入测试数据: for(var i=1; i<20; i++){     var num=i%6;     db.test.insert({_id:i,name:"user_&quo ...

  5. UVa 1453 - Squares 旋转卡壳求凸包直径

    旋转卡壳求凸包直径. 参考:http://www.cppblog.com/staryjy/archive/2010/09/25/101412.html #include <cstdio> ...

  6. 【原创】MySql 数据库导入导出(备份)

    啥不说了,两周前刚刚做过mysql导入导出的结果现在又忘了.. 更可悲的是竟然同样的三篇blog,现在看起来还是如当初一样费劲,里面的内容..所以自己写个记录一下 环境:*nix 权限:有相关表的写读 ...

  7. Lua for windows中SciTe开启支持python的方法

    打开Options-Open Global Options #import python的#去掉即可

  8. struct inode 和 struct file

    1.struct inode──字符设备驱动相关的重要结构介绍 内核中用inode结构表示具体的文件,而用file结构表示打开的文件描述符.Linux2.6.27内核中,inode结构体具体定义如下: ...

  9. 内存分配方法 kmalloc()、vmalloc()、__get_free_pages()

    Copyright: 该文章版权由潘云登所有.可在非商业目的下任意传播和复制. 对于商业目的下对本文的任何行为需经作者同意. kmalloc #include <linux/slab.h> ...

  10. Linux改IP后务必重启网络服务

    [root@localhost ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0BOOTPROTO=noneONBOOT=yes ...