2011-07-21 12 views
0

私は、UpdateControllerクラスがデータを更新するロジックを管理するソリューションを用意しています。このコントローラは、データ(ClaimData、StatementDataなど)を管理するためのさまざまなクラスを呼び出します。これらのデータ・ハンドラー間で接続を共有する最良の方法は何ですか?シングルトンを使用するか、接続を管理して各データ・ハンドラーに渡す別のクラスを作成しますか?アプリケーションがマルチスレッドの場合はどうなりますか?複数のデータハンドラ間でのOracle接続の共有

ありがとうございます。

答えて

1

あなたは...接続してこれらのそれぞれを提供するために、

を依存性注入を使用することができます別の方法は、プール内の接続(例えばDevartのキ繝ァ繝ヨのために、私は唯一の顧客午前)でのOracleプロバイダを使用することです。..あなただけの依存関係の注入や設定ファイルを介して接続文字列を共有する...すべてのクラスは、独自の接続をインスタンス化/解放...中央接続プール(残りの接続を再利用するなど)...あなたのように接続に関するスレッドの問題を心配する必要はありません。

+0

このようなほとんどのデータプロバイダまたはODACまたは組み込みのSQLServerプロバイダは、接続をプールしているので、接続です。 C#で暗黙的にスレッドを使用しているときと同じです。フレームワークが注意します。接続を開く、使用する、閉じる - これがパターンです - フレームワーク内で実際に何が起こっているのかを判断します。そのようなフレームワークを使用していない場合は、パラメータ依存性注入として接続を渡すことが最善の方法です。シングルトンは悪いコードです。 – Hanan

+0

お返事ありがとうございます。私はシングルトンが悪い考えであることに同意します、そして、それはここで私に使用するために提案されたものです。プールは、マルチスレッドを使用するアプリケーションで動作しますが、スレッドセーフである必要がない場合は、接続を共有する方が効率的ではありませんか? 悲しいことに、私はDependency Injectionに精通していません。再度、感謝します。 – areyling

+0

将来的にスレッドが必要な場合は、シングルトンを変更する大きなポイントになるでしょう...効率に関しては、プールのアプローチは現在のシナリオではあまり効率的ではありませんが、確かに測定可能ではありません。 ... – Yahia

関連する問題