0

私たちは、レガシ ステータスに急速に近づいている .NET 3.5 アプリを使用しています。データベースからレコードを読み取り、それらをサードパーティの MS SQL データベースに保存して、すべてのデータ行を 1 つのバッチで送信する既存の SOAP サービスがあります。

これは常に問題なく機能していましたが、最近、以前よりもはるかに大規模なクライアントを引き受けました。クライアントははるかに大きなバッチを送信しているため、失敗し始めています。IIS でタイムアウトと最大メモリ サイズを増やし、web.config で maxRequestLength を最大化しましたが、まだサイズの問題が発生しています。

したがって、長期的には、SOAP から WCF への移行を検討する必要があることを理解しており、その計画は進行中です。しかし当面は、この新しいクライアントの短期的な修正が必要です。そしてもちろん、ビジネス担当者と営業担当者を満足させるには、ちょっと急がなければなりません。

ベストプラクティスのアプローチが何であるか疑問に思っています。最初はこのようなことを考えていましたが、ボックス内で考えすぎている可能性があります。

  1. 一度に同期を試みたくないレコード数のベンチマークを確立します。

  2. データを保存する前に、そのベンチマークに対してレコード数を確認してください

  3. それを上回っている場合は、伝送をそれぞれがそのベンチマークを下回っているセグメントに分割します。SELECT TOP 10000 * FROM table WHERE sent = false など、ベンチマークが 10000 の場合。次に、送信されたレコードの更新を true に送信します。繰り返す。

  4. 明らかに、これによりプロセスが遅くなるため、ユーザー エクスペリエンスを処理するために、進行状況を確認できるようにステータス バーを表示したい場合があります。

私は正しい軌道に乗っていますか?

4

1 に答える 1

0

John からのコメントに加えて、最適な方法で問題を解決しているかどうかを検討する必要があります。

Web サービスを呼び出して、2 つのデータベース間で一方向の同期をトリガーしているようです。このアプローチは、発生しているタイムアウトとメモリの問題につながります。

一方向の同期を行うことが目標の場合は、Microsoft の同期フレームワークなどの無料のフレームワークを使用できます: http://msdn.microsoft.com/en-US/sync

于 2013-02-06T21:07:48.567 に答える