ConnectionStrings或AppSettings的存储库

时间:2016-10-14 19:14:09

标签: c# asp.net asp.net-mvc redis

想知道是否有人将数据库用作连接字符串或应用程序设置的存储库,这些设置可用于跨多个不同服务器的多个Web应用程序?

我们所有的web api应用程序都有记录数据库和跟踪数据库的连接字符串,我知道在接下来的6个月内,这些数据库将改变位置。在进入每个web.config设置时,我想在接下来的几个月内重构Web服务,以指向此连接字符串(和其他)的中央存储库。

我非常努力地避免使用Machine.config,这就是我在每个web.config中都有连接字符串的原因。

我们正在使用redis进行会话管理,我考虑过使用其中一个数据库,因为它最终是一个键值对。有没有人在这件事上使用它?

你们有些人如何解决这个问题?

由于此标记过于宽泛,请告诉我是否可以添加更多详细信息。我们有近50个Web服务,它们在web.config中具有相同的连接字符串,并且位于多个不同的服务器上。我想编辑这些服务以使用共享资源,以便在连接字符串更改时,我们只需要编辑单个资源,而不是重新部署每个Web服务和/或编辑每个web.config。我不喜欢使用machine.config。

1 个答案:

答案 0 :(得分:2)

虽然您可以完美地使用 Redis 或任何数据库来存储此类全局设置,但您可能需要的是构建脚本

如果你在.NET世界中,我想你知道什么是Team Foundation Server,它还提供 Team Foundation Build

通常您可以将它们作为自定义构建属性提供,而不是对连接字符串等设置进行硬编码,这些属性可用于替换文件中的某个占位符。您的文件如下所示:

<add name="myConnectionString" connectionString="server=%host%;database=%database%;uid=%user%;password=%password%;" />

自TFS 2015以来,TFS Build具有可编写脚本的构建系统,因此您可以添加Powershell步骤以使用构建配置中的实际值替换占位符(请参阅此其他问答以了解更多信息:How to replace multiple strings in a file using powershell)。< / p>

替换占位符后,您可以添加部署步骤,并使用FTP,WebDeploy或其他协议将整个应用程序部署到某台计算机。

总之,如果根据部署情况可能会有所不同,即使在web.config中也可以避免使用硬编码配置,这些变量设置可以使用构建脚本进行注入。也就是说,当您更改某些配置时,可以在构建自定义属性中执行此操作,然后使用配置更改再次部署应用程序。

此页面应该是您进一步研究此方法的良好开端:https://www.visualstudio.com/en-us/docs/build/define/build

另外,请检查Visual Studio Team Services on Azure,这是Azure中托管的TFS的一种变体。