对于Azure Worker角色,cscfg文件和App.config文件如何相互关联?

时间:2013-01-16 12:50:16

标签: azure configuration azure-worker-roles

在“内部部署”世界中,在创建类似Windows服务的应用程序时,我经常使用App.config文件来存储有关应用程序的各种配置信息,从数据库连接字符串到WCF端点信息。 / p>

在Azure Worker Role世界中,我现在看到了.cscfg文件,据说这些文件包含“角色”的信息。

我不明白这些文件是否用于补充应用程序的配置,或完全替换App.config文件。这两个文件如何配置Azure Worker角色?

2 个答案:

答案 0 :(得分:17)

非常基本的解释

从概念上讲,它们是一样的。在传统应用程序中,您使用app.config文件来定义与应用程序相关的各种设置(在appSettings部分中)。同样,您使用cscfg文件来定义与云应用程序相关的各种设置(在ConfigurationSettings部分中)。与app.config文件一样,您可以在cscfg文件中定义其他内容(例如,您的云应用程序的实例数)。

如果需要,您仍然可以在app.config文件中定义一些设置,但要记住的一件事是app.config文件被“打包”并部署,并且为了更改设置,您将拥有重新打包您的应用程序并进行部署。但是,您可以使用门户网站或Service Management API动态更改cscfg文件中的设置,而无需重新打包和重新部署应用程序。例如,考虑您在设置文件中定义数据库连接字符串的场景。如果您在app.config中指定,为了更改它,您需要在app.config文件中进行更改 - >构建应用程序 - >发布应用程序。在cscfg文件的情况下,您只需在门户中更改此值。

答案 1 :(得分:13)

对于Web / Worker角色,传统配置文件(app / web.config)将继续像在本地部署中那样工作。但重要的是要知道该文件包含在服务包中,这意味着它是部署的一部分。

这意味着您无法在不重新部署应用程序的情况下更改app / web.config中的设置。另一方面,ServiceConfiguration.cscfg是在Cloud Service部署位置级别定义的,位于实际Service Package旁边。这意味着您无需重新部署应用程序即可更改此配置文件。您也可以通过调用RoleEnvironment.GetConfigurationSettingValue(类似于ConfigurationManager.AppSettings)从您的应用程序访问这些设置。

如果您考虑构建适用于本地和Windows Azure的应用程序,请考虑使用Microsoft.WindowsAzure.ConfigurationManager package。它会根据应用程序的运行位置自动选择cscfg或app / web.config。

提示:通过订阅RoleEnvironment.Changing / Changed事件,您可以拦截对此配置文件的更改。您可以处理此问题以更新代码中的web.config,例如(explained here)。