我有一个 .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 连接时后悔这种方法。