6

将连接字符串存储在数据库中的想法是一个不正当的想法,但请先听我说完。我们都知道在 web.config 文件中加密连接字符串是最佳实践,但是如果我们完全跳过 web.config 文件呢?

几个月前,我被要求将数据库从一台服务器移动到另一台服务器。这意味着必须更新访问这些不同数据库的每个程序中的连接字符串。这是 2 年来我第三次不得不将数据库从一台服务器移动到另一台服务器。所以我想到了将连接字符串存储在数据库中,并为每个字符串分配一个 GUID,以便通过 Web 服务访问。无需将连接字符串放在 web.config 中,您只需将连接字符串 GUID 存储在 web.config 中,并引用连接字符串 Web 服务,以便您可以请求该连接字符串。加密可以在应用程序级别完成,连接字符串只是加密存储在数据库中。

我已经创建了一个概念证明,它工作正常(它只是在本地 Intranet 上而不暴露在 Internet 上)。

对我来说好处是显而易见的;例如能够快速更新连接字符串,而无需接触 Web 应用程序。这意味着您可以构建一个仅用于编辑数据库中的连接字符串的 Web 应用程序,DBA 可以在其中自己使用它,因此他们在移动数据库时不必打扰程序员。

但好处不是我感兴趣的。我感兴趣的是这里的每个人对做这样的事情的看法?

4

6 回答 6

4

将连接字符串从主 web.config 中取出,并将它们放在单独的配置文件中。然后,此文件对于您的所有应用程序都是相同的,因此如果它们必须更改,您只需将相同的文件复制并粘贴到所有应用程序文件夹中,而不是单独编辑每个配置。

于 2009-03-30T14:51:55.523 回答
2

我可以看到的主要缺点是明显的性能损失(如果您随后缓存连接字符串)以及您可能会引入所有应用程序的单点故障(除非您要对该服务进行负载平衡,这将似乎有点矫枉过正)

于 2009-03-30T14:52:58.377 回答
1

当您的网络服务更改位置时怎么办?然后,无论如何您都必须更新所有 web.configs。

您的应用程序是在同一台服务器上,还是分布在几台服务器上?您可以编辑机器 web.configs 以包含数据库连接字符串以节省大量重复。

于 2009-03-30T14:42:32.207 回答
1

我倾向于做两件事之一。我会将连接存储在 Machine.Config 中,或者我将创建一个仅引用 DB 服务器的新主机名。然后我在hosts文件中放了一条记录。

这样做的好处是,当我从本地机器移动到开发 qa 或生产环境时,我永远不必更改配置文件。

于 2009-03-30T14:46:40.980 回答
1

非常有趣的问题。我找到了它,因为我只是有同样的想法。

在我看来,它与 UDDI 非常相似,它为您提供了另一层间接性,可能会增强安全性并提高可维护性(除了单点故障,您无论如何都可以解决)。

当然有 DNS 可以解决主机名的问题,但是有了这样的 Web 服务,你就有了难以置信的可能性,比如根据谁的要求返回不同的连接字符串(取决于即 SSL 证书或用户/通行证或令牌,目录服务,如 AD、LDAP , 用户角色等 - 天空是极限:)

此外,所有连接字符串都将得到适当的保护,并且无法被好奇的用户窥探。

起初,这个想法似乎不合时宜,但我越想,我就越相信企业级公司可以从引入这样的解决方案中受益匪浅。

于 2009-12-29T14:44:19.423 回答
0

我知道我不是唯一一个有这个想法的人。在考虑了各种自定义应用程序和 Intranet 站点(更不用说众多的数据库和服务器)之后,我最近才开始思考它。在我看来,WCF 服务可以或应该以多种方式返回数据库连接信息:连接字符串、实际连接或只是服务器和数据库名称。此外,服务本身应该可能从可用于管理各种连接点的中央辅助数据库和表中获取其信息。例如:给我会计数据库连接,生产或开发等。

于 2015-04-12T06:34:38.673 回答