2

トランザクションを使用せずに、Microsoft SQL Serverを使用してデータを読み取る(そして読み取るためだけに)ステートレスWebサービスを作成しています。次の中で最も優れているものは何ですか。

  1. Webサービスを呼び出すたびにSqlConnectionを開始する、または
  2. 静的フィールドにSqlConnectionを保存します。

IMHO、最初のアプローチはリソースが多すぎます(10のクライアントがWebサービスに10のリクエストを行うと、データベースの100倍が開きます...)が、2番目のアプローチには問題があるのでしょうか。多分競合状態?またはセキュリティの問題?

4

3 に答える 3

1

個人的には、デフォルトで各呼び出しで接続を開き、接続プールに依存して整理します。

于 2009-12-30T03:32:33.983 に答える
1

なんらかの理由で問題が発生しない限り、接続コストについては心配しません。接続プールを使用すると、この問題のほとんどが軽減されます。

データベースを頻繁に使用している場合、または大量の静的データを取得している場合は、データベース期間への接続の全体的なコストを削減するために、ある種のキャッシュの実装を検討することをお勧めします。ステートレス Web サービスであっても、アプリケーション キャッシュに保持できるデータが多ければ多いほど効果的です。

于 2009-12-30T03:36:14.897 に答える
1

最大/最小プール サイズを追加すると、SQL サーバーは接続をプールできるため、新しい SqlConnection オブジェクトを作成しても、データベースは接続をプールできます。

(MSDN、最小プール サイズ)

例えば。ConnectionString="Catalog=MyDb; MinPoolSize=10; MaxPoolSize=10..."

于 2009-12-30T03:31:54.093 に答える