0

我想知道在.net 中设置可重用组件/库时什么被认为是最佳实践。我有一个 web 服务,它利用一个包含一些数据库连接的库来与数据库交互。我想知道在指定连接字符串时应该如何设置我的库。

在部署到 dev/uat/prod 环境时,我需要能够更改可重用组件连接到的数据库。此外,一定需要能够跟踪谁在进行数据库调用——我可能想看看谁是可重用组件的用户,所以如果 web 服务 A 和 B 都在使用它,我可能希望 ws_A_usr 在连接字符串,同样适用于 B。

我看到了一些可以做到这一点的方法,但是我正在重构一些遗留的所有三个实现都被使用。

我应该从配置中读取连接字符串(MyLib.Properties.Settings.Default.abcConnectionString)

我应该接受连接字符串作为我的 api 中的参数吗?

我应该接受 IDbConnection 作为我的 api 中的参数吗?

还有其他更合适的方法来做到这一点 - 最好的方法是什么?

4

2 回答 2

1

我会说图书馆应该独立于它的用户(在这种情况下是网络服务)。在这方面,对配置文件的依赖并不是那么好。

您确实需要 Web 服务的 web.config 中的连接字符串,但您希望在某个时候通过参数将其传递给库。这将允许您在非 Web 项目中使用相同的库。此外,它还允许您实现不同的方法来获取连接字符串(也许来自 web 服务调用)。

HTH。乔纳森

于 2009-04-21T09:32:22.283 回答
0

在我看来,这取决于连接与组件的绑定程度。如果连接到一个仅由组件使用的数据库,那么强制组件的用户了解有关这些连接的任何信息是没有意义的。在这种情况下,将连接字符串保存在配置文件(app.config 或 web.config)中是可行的。事实上,将连接字符串保留在组件内部可能就足够了,但在配置文件中公开数据库服务器名称。

如果组件使用与组件用户相同的数据库,则允许将连接作为组件的属性传入。如果未设置属性,组件可以选择是否默认为内置连接字符串,或者如果未设置属性则抛出异常。


如果您不介意将整个连接字符串暴露给消费者,则允许整个字符串存在于 app.config 或 web.config 中。特别是,使用 .NET 2.0 应用程序设置功能 (Properties\settings.settings)。这将导致默认值被编译到程序集中,但是当组件被使用时,这些默认值将被写入 app.config 文件。它们可以从那里进行编辑。

如果要限制可以更改的连接字符串的部分,则将这些部分编译到程序集中。公开您允许更改的部分的各个属性。特别是,公开数据库服务器名称、应用程序名称、用户名、密码等。这些属性将设置连接字符串的相应部分。如果您还不知道,请参阅SqlConnectionStringBuilder 类。

于 2009-04-21T11:26:15.300 回答