共享配置文件&跨企业的数据库连接字符串

时间:2011-02-03 20:21:26

标签: .net web-config app-config

我们公司有几个应用程序 - 网络和控制台/窗口 - 都连接到同一组数据库。我正在尝试找出存储/访问/管理各种数据库连接字符串的最佳方法,以便它们可以在所有应用程序之间共享。

目前,我们在所有服务器上的machine.config文件中都有连接字符串。虽然这消除了在每个应用程序的配置文件中使用这些连接字符串的需要,但我们仍然必须在每个服务器上具有相同的设置块,并且每个服务器具有4个不同的版本,我们必须包括这些(32/64位) ,2.0和4.0框架)。此外,每个服务器都有自己的环境(dev,QA,production),因此这些设置必须保持独立。这会增加,并且在需要更改时变得难以管理。

理想情况下,在每个服务器上都有一个中心位置 - 可能在网络上共享 - 这些数据库连接字符串(可能还有其他信息)存储起来会很不错。我已经研究了几个选项,但每个选项都有局限性:

configSource and appSettings file

这看起来不错,但只适用于app.config和web.config级别,并且不支持绝对(或UNC)路径。如果我们可以将其指向服务器上的中心位置,那么这可能会起作用。但据我所知,它必须位于应用程序根目录下的某个位置,并且必须是相对路径。我读到了使用文件链接,如果我们在更改后部署每个应用程序,这将有效,但我们不希望这样做 - 我们希望能够将文件部署到一个位置(每台服务器,最糟糕的情况)并且完成了。

linkedConfiguration

理论上,这听起来像我们想要的。但我发现很少支持它,所以我想知道这是否已被弃用,不能正常思考,或者不推荐。

其他人如何分享这样的配置值,是否有办法使用上述任何方法来完成我所描述的内容?对我们的情况有什么最佳做法?

提前致谢。

2 个答案:

答案 0 :(得分:1)

根据这篇文章,这是不可能的。

http://social.msdn.microsoft.com/forums/en-US/netfxbcl/thread/1cad3740-12f5-4859-ba02-717c4b418a8c/

It must refer to a file in the same directory or in a subdirectory as the configuration file.

现在,如果你想研究一个“拖拉机拖车”版本的配置,那就去看看这个兔子洞:

http://msdn.microsoft.com/en-US/vstudio/bb499684.aspx

配置服务

或(同样的事情,但寻找它的方式不同) google或bing this

stocktrader msdn“配置服务”

这不适合温和的心肠。但是所有关于将配置更改部署到大型环境。

答案 1 :(得分:0)

希望这会有所帮助,尽管它可能与提出的问题完全不同。

为了管理各种环境中的配置,我们使用了一种非常好的方法,它利用了maven和Jenkins等构建自动化工具,以及一个简单的java程序以及一些bash脚本。

我们创建了一个包含所有环境(DEV,QA,PROD)的各种属性的Dictionary,它应用于包含所有环境的配置文件列表的通用模板,Java程序替换了模板中的占位符,使用字典中的值,为所有环境创建配置文件,因此现在所有配置都在我们创建的字典的代码级别进行管理。 Java程序是在maven构建中执行的,它也会复制我们在生成的配置文件中可能需要的任何其他资源(例如证书),整个东西都是通过Jenkins在服务器中打包和部署的。部分bash脚本会将配置文件放在正确的文件夹中,从而自动化所有内容。