Asp.net Azure服务配置对其他人来说是否向后?

Asp.net Azure服务配置对其他人来说是否向后?,asp.net,azure,Asp.net,Azure,本周我刚刚迁移并部署了我的第一个Azure Web角色,现在部署它的压力已经解除,我正在阅读“Azure正在运行”,在阅读了有关配置设置的内容后,整个事情让我感到不安 这对于迁移AppSettings类型配置设置来说似乎很好。但是,system.web、system.webServer和system.webService或其他更复杂的配置系统中的设置如何。如果我想修改我的WCF配置设置,我当前的选项是: 进行更改并进行全面部署(构建、上载到暂存、切换VIP) 通过自定义行为或诸如此类的方式扩展W

本周我刚刚迁移并部署了我的第一个Azure Web角色,现在部署它的压力已经解除,我正在阅读“Azure正在运行”,在阅读了有关配置设置的内容后,整个事情让我感到不安

这对于迁移AppSettings类型配置设置来说似乎很好。但是,system.web、system.webServer和system.webService或其他更复杂的配置系统中的设置如何。如果我想修改我的WCF配置设置,我当前的选项是:

  • 进行更改并进行全面部署(构建、上载到暂存、切换VIP)
  • 通过自定义行为或诸如此类的方式扩展WCF以使用服务配置(cscfg)
  • 我想可能是我误解了这个用法——就像这些例子只是一个非常幼稚的例子,在实践中它们的用法是不同的。然而,在谷歌搜索了一段时间后,似乎每个人都在这样做。例如,我必须为实体框架连接使用connectionStrings配置元素,而不是使用connectionStrings配置元素

    这不仅看起来工作量太大,而且还将我的整个配置实现与Azure绑定在一起。是的,我可以使用一个接口,这样我就可以抽象细节并在需要时替换实现。但是我仍然不喜欢所有额外的工作,连接字符串很简单,但是有更复杂的事情需要重写

    我的想法是,我应该能够在启动时读取服务配置,并使用ConfigurationManager更新我的web.config。如果运行时发生更改,我可以再次更新web.config。这样,我的应用程序仍然是可移植的,并且我没有硬连线到Azure配置系统

    有人同意吗?还是只有我

    我的想法是,我应该能够在启动时读取服务配置,并使用ConfigurationManager更新我的web.config。如果运行时发生更改,我可以再次更新web.config。这样,我的应用程序仍然是可移植的,并且我没有硬连线到Azure配置系统

    在这种情况下,如果Azure重新启动您的角色会发生什么?配置将恢复为服务配置中的配置。如果您正在运行多个实例,那么它们之间的配置可能会有所不同,从而产生潜在的危险结果

    一个选项是构建(一次)客户配置提供程序,该提供程序从其他地方(如表存储)而不是web.config或.cscfg获取设置

    通过在接口后面抽象配置提供程序,可以利用依赖项注入为部署模型提供适当的配置机制

    我感觉到你的痛苦,但这真的只是一个需要解决一次的问题

    它将我的整个配置实现绑定到Azure

    为了让应用程序能够正确地利用Azure,您将不仅仅局限于配置实现

    例如,表存储比SQL Azure快得多,即使使用SQL Azure,也存在一些差异,例如对聚集索引的要求

    值得记住的是,与虚拟主机不同,Azure并不是Windows Server的抽象:它本身就是一个平台,有其优缺点


    在配置设置的情况下,在我看来,它们在生产设备上相对难以更改是完全合理的。然而,在开发和测试时,这显然是另一回事;为此,还有一个,它允许您在几分钟内进行“一次性”部署。

    我认为服务配置的目的是您可以在运行时更新设置,并且不会因为重新启动而丢失它们?是的,我的web.config在角色重新启动时会释放设置,但这就是为什么我建议在角色启动/重新启动时使用启动挂钩更新web.config。我没有完全理解“如果有什么变化”意味着服务配置发生了变化。我的错。您可以使用RoleEnvironmentChanged hander处理配置更改。标准行为是重新启动角色,但您可以选择捕获更改并按自己的方式执行。尝试更新web.config时,请记住ASP.NET的行为是在web.config更改时重新启动应用程序。这可能比你想要的更具破坏性。是的,我确实想过重新启动ASP.NET。但我有点专注于我不喜欢Azure机型的地方。从外观上看,建议将所有配置设置移动到服务配置,但这似乎并不正确。所以也许我的问题在于指导而不是实施。相反,应该移动的唯一设置是那些您在运行时确实需要更改的设置,而不是“嘿,现在我可以在运行时重新配置我的整个角色了”。我认为您已经完全击中了要害,@Mark。这是一个主观问题,有点像“AMIRITE?”问题。这对这个网站来说并不太合适。