2

我有一个 .NET Winform Click-Once 部署的胖客户端,它与三个数据库、2 个 SQL Server 数据库和一个 Oracle 数据库通信。

第一个 SQL Server 数据库,我将调用 Master。我想向主数据库添加更多表和列,但我被告知我不会被授予这样做的权利,这是不可协商的。因此,我决定添加一个新的 SQL Server 数据库,我将其称为 Extensions 数据库来存储我想放置在 Master 中的其他信息。

由于我无权将 Extension 数据库与 Master 放在同一台服务器上,因此我在另一台服务器上创建了 Extension db,并创建了从 Extension 数据库服务器到 Master 数据库服务器的 db 链接。这使我能够执行跨越两个数据库的查询。我还有第三个数据库,一个 Oracle 数据库,我偶尔会连接到它。

因为我认为连接到 Oracle 数据库需要安装 Oracle 驱动程序,这不太可能在最终用户的 PC 上,所以我决定让 WinForm 客户端调用 Web 服务,Web 服务会返回结果。为了保持一致性,因为我的直觉告诉我应该从一个地方执行数据库访问操作,所以当胖客户端需要与 SQL Server 数据库通信时,我采用了相同的方法,即它们通过 Web 服务。

现在我质疑我是否因为首先必须调用 Web 服务器然后让 Web 服务器调用数据库而不是在胖客户端中打开用户 PC 上的连接并直接连接到而对性能造成太大影响SQL Server 数据库。请注意,我所指的应用程序是一个非官方的实用程序,需要访问这三个生产数据库,但不允许在生产中实际运行,所以我怀疑我的开发 Web 服务器和生产数据库之间的正常高速管道不要在这里申请。

为了获得最佳性能,我的 Winform 应用程序是否应该直接与 SQL Server 数据库建立连接?有哪些取舍?

今天是否仍然需要额外的驱动程序来连接到 Oracle 数据库,或者现在所有这些都在 .NET 框架中,如果我愿意,我也可以直接连接到 Oracle 数据库?

此外,我发现使用链接服务器比创建两个单独的数据库连接并将数据集中在一起要慢。当我启动两个异步查询然后将数据组合在一起时,我得到了最好的结果,就好像它是由一个使用数据库链接的查询返回的一样。但是,这会导致维护问题,并让我在需要修改跨数据库的 SQL 连接时后悔这种方法。

4

3 回答 3

4

几年来我一直在开发企业应用程序,这让我认为中间层(在你的情况下是 Web 服务)总是有意义的,直接从 UI 连接到数据库对我来说总是不可行。我不认为你做出了错误的决定。从长远来看,拥有中间层确实很有意义。另请注意,您构建的 Web 服务可以被不同的应用程序使用。

于 2009-08-02T20:33:56.133 回答
1

我不知道您的性能要求,但 wcf Web 服务很快。我认为拥有用于数据库访问的中间层(您的 Web 服务)没有任何问题。它也非常安全。

于 2009-08-02T20:33:19.537 回答
0

我认为,如果您已将 Oracle 服务器配置为 SQL 服务器中的链接服务器,则不需要单独的 Oracle 驱动程序。您可以只使用您的 SQL 服务器作为数据源。

尝试创建存储过程以获得更快的结果。如果您使用 SQL 管理工作室,您可以检查执行计划以优化您的存储过程(配置索引)。

我认为在这种情况下不需要 Web 服务。

于 2009-08-02T20:19:50.737 回答