最近一直在做项目迁移的工作,由传统的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. PCL—低层次视觉—点云分割(基于形态学)

    1.航空测量与点云的形态学 航空测量是对地形地貌进行测量的一种高效手段.生成地形三维形貌一直是地球学,测量学的研究重点.但对于城市,森林,等独特地形来说,航空测量会受到影响.因为土地表面的树,地面上的 ...

  2. javadoc 和 javadoc注释规范

    javadoc是Sun公司提供的一个技术,它从程序源代码中抽取类.方法.成员等注释形成一个和源代码配套的API帮助文档. javadoc命令是用来生成自己API文档的,使用方式:在dos中在目标文件所 ...

  3. 1741. Communication Fiend(dp)

    刷个简单的DP缓缓心情 1A #include <iostream> #include<cstdio> #include<cstring> #include< ...

  4. POJ1037A decorative fence(好dp)

    1037 带点组合的东西吧 黑书P257 其实我没看懂它写的嘛玩意儿 这题还是挺不错的 一个模糊的思路可能会好想一些 就是大体的递推方程 dp1[][]表示降序 dp2[][]表示升序 数组的含义为长 ...

  5. java实现DES算法

    import java.util.UUID; import javax.crypto.Cipher; import javax.crypto.SecretKey; import javax.crypt ...

  6. C#手动回收内存的简单方法

    C#有自动回收内存的机制,但是有时自动回收有一定滞后,需要在变量使用后迅速回收,节约内存,这里介绍一个最简单的方法. 1.先对对象赋值 null; 2.System.GC.Collect(); 代码样 ...

  7. bzoj1053: [HAOI2007]反素数ant

    51nod有一道类似的题...我至今仍然不会写暴搜!!! #include<cstdio> #include<cstring> #include<iostream> ...

  8. Jqgrid入门-使用模态对话框编辑表格数据(三)

            Jqgrid是一个强大的表格插件,它提供了多种方式来编辑数据.这三种方式分别是: Cell Editing——只允许修改某一个单元格内容 Inline Editing——允许在jqGr ...

  9. 推荐 15 个 Angular.js 应用扩展指令(参考应用)

    几天前我们看到Angular 1.4.0发布了-一个以社团为驱动的发布版本涵盖了400多个GitHub的提交,增加了对特性的提升,比如动画,以及可用性. 官方新闻发布稿 覆盖了绝大部分,这同样值得放于 ...

  10. python - 沙盒环境 - virtualenv - 简明使用录

    1. 不讲安装,没意思 2. 使用 virtualenv ENV # 建立环境,ENV你可以随便定,看起来像是 mkdir ENV cd ENV # 进目录呗 source bin/activate ...