2

3つのデータベース(2つのSQL Serverデータベースと1つのOracleデータベース)と通信する.NET WinformClick-Once-deployedファットクライアントがあります。

最初のSQLServerデータベースであるマスターを呼び出します。マスターデータベースにさらにテーブルと列を追加したかったのですが、それを行う権利は与えられない、交渉できないと言われました。そこで、新しいSQL Serverデータベースを追加することにしました。これを拡張データベースと呼び、マスターに配置したい追加情報を格納します。

拡張データベースをマスターと同じサーバーに配置する権限がなかったため、別のサーバーに拡張データベースを作成し、拡張データベースサーバーからマスターのデータベースサーバーへのデータベースリンクを作成しました。これにより、2つのデータベースにまたがるクエリを実行できました。また、時々接続する3番目のデータベースであるOracleデータベースもありました。

Oracleデータベースに接続するには、エンドユーザーのPCにインストールされていない可能性が高いOracleドライバーをインストールする必要があると考えたため、WinFormクライアントにWebサービスを呼び出させ、Webサービスが結果を返すことにしました。一貫性を保つため、またデータベースアクセス操作は1つの場所から実行する必要があると内臓から言われたため、ファットクライアントがSQL Serverデータベースと通信する必要がある場合、つまりWebサービスを経由する場合も同じアプローチを採用しました。

ファットクライアントでユーザーのPCの接続を開いて直接接続する代わりに、最初にWebサーバーを呼び出してから、Webサーバーにデータベースを呼び出させることで、パフォーマンスが大幅に低下するかどうか疑問に思っています。 SQLServerデータベース。私が参照しているアプリは、これら3つの本番データベースにアクセスする必要があるが、実際に本番環境で実行することは許可されていない非公式のユーティリティであるため、開発Webサーバーと本番データベースの間の通常の高速パイプが疑われます。ここでは適用しないでください。

最高のパフォーマンスを得るには、WinformアプリでSQL Serverデータベースへの直接接続を確立する必要がありますか?トレードオフは何ですか?

追加のドライバーがOracleデータベースに接続する必要があるというのは今日でも本当ですか、それともすべてが.NET Frameworkにあり、必要に応じてOracleデータベースにも直接接続できますか?

また、リンクサーバーの使用は、2つの別々のデータベース接続を作成してデータを一緒にプールするよりも遅いことがわかりました。私の最良の結果は、2つの非同期クエリを開始し、dbリンクを使用して1つのクエリによって返されたかのようにデータを結合したときに得られました。ただし、これはメンテナンスの問題につながり、データベース間でSQL do結合を変更する必要があるときに、このアプローチを後悔することになりました。

4

3 に答える 3

4

私は数年間エンタープライズアプリケーションの開発に携わってきましたが、中間層 (あなたの場合は Web サービス) は常に理にかなっていて、UI から DB に直接接続することは常にNOであると考えています。あなたが間違った決断をしたとは思いません。長期的には、中間層を持つことは非常に理にかなっています。また、構築した 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 に答える