2016-07-29 17 views
1

私は、SslStream/NetworkStream/TcpClientと複数のSqlConnectionのインスタンスを持つアプリケーションを作成しています。私は常にそれらを介してデータを送受信していますが、これは複数のサーバーにローカルとリモートの両方でアクセスするアプリケーションであるため、接続の失敗を監視し、失敗した場合に再起動を試みる必要があります。これらのクラスをどのように監視するべきかについてMicrosoftがサポートしている規約がありますか?ドキュメンタトンは本当に私には何も表示されません。私はSslStreamのためにCanRead/CanWriteを試しましたが、私はもちろん、タイムアウトを監視する能力を持っています。これらのタイミングをとるための推奨時間はありますか?モニタリング/カウントダウンタイムアウトは接続損失を監視する唯一の方法ですか?C#:Monitoring Connections

答えて

2

管理SqlConnectionインスタンスは短命である必要があります。必要なときに作成してから処分してください。アプリケーションを欲しいときにアプリケーションにぶら下げないでください。これは非常に悪い習慣です。その理由は、Sql Server(他のデータベースと同様)が接続プーリングを実装しているため、管理接続を作成するのが比較的安価であるため、基本接続がプールに戻った後に再利用されるからです。

+0

これは非常に役に立ちます。唯一の問題は、このアプリケーションは、リモートサービスからのパケットデータの一定のストリームを受信し、フォーマットし、複数のSQLデータベースに格納することです。これは従来どのように処理されていますか?私が挿入しようとしているすべての回線に対して新しい接続を開くと、接続が集中的になりませんか?私は別のスレッドで各インサートを実行する必要がありますので、いつもたくさんの接続がありますか? – Rob

+1

@Rob - キューを設定することができます(.netに複数のキュープロバイダがあります)。それを構造化して、着信データをキューにプッシュし、次にすべてのXXX(ある時間フレーム)でキューを空にします。データベース。キューから読み込まれ、DBに書き込まれたデータがその期間の新しいSqlConnectionを作成し、反復が完了したときにそれを破棄する各実行では、 – Igor

+0

私はそれを考慮していませんでした。これは私のプログラムで他にもたくさんのキューがあるので面白いです。どのくらいの頻度で待ち行列を処理するかについての優れたソフトウェアルールがありますか? – Rob

関連する問題