2009-07-17 7 views
1

約1,000人の従業員PCにインストールされるWindowsフォームアプリケーションを開発しています。ユーザーは、アプリケーションの複数のインスタンスを同時に実行できます。クライアントはすべて1つのイントラネット上にあります。WindowsフォームとWCF - クライアントアプリケーション通信

アプリケーションが変更されると、データベースレコードの変更が発生する可能性があります。その変更は他のクライアントに伝達され、UIが更新されます。

1.マルチキャストパケット

ソースクライアントがレコードを変更して、何かが変更されたペイロードにマルチキャストパケットを送信:

私たちのチームは、およそ2つの異なるアプローチを話しました。他のクライアントはこれを受け取り、指定されたデータをフェッチします。パケットが受信されなかった場合を考慮し、積極的にデータを取得する必要があります。

この時点で私の質問は、クライアントがパケットを受信しなかったことをどのようにして知っていますか? (あなたが知らないものは分かりません)データベースにタイムスタンプを含む何らかのイベントログを表示し、UIコントロールは更新された最後の時刻を追跡します。彼らは集中し、タイムスタンプをチェックし、必要に応じて更新します。

他の人は、UI要素がフォーカスに入るたびにリロードすると述べています(Outlookのモードを考え、CABを使用してスタックワークスペースの前面にコントロールを配置する)。マルチキャストは、現在のコンテキストが変更されたクライアントを更新することです。彼らがそれを見逃した場合、彼らはモードを変更して戻ってくるまで古いデータで動作します。

2. WCFとコールバック

クライアントバインディングTCP上のコールバックのWCF契約に登録します。これに関する主な技術的懸案事項は、サーバーが多くのオープンソケットを維持していることです。私たちは、それが伝統的な意味でどのように開いていないのかを読んで、最大90秒間眠ってから、その時点で再確立します。また、Windows 2003 Serverマシンが処理できるオープンな接続の最大数、およびレジストリでその接続を変更する方法についても説明しました。

サーバに1,000個のオープンソケット接続がある場合、これは崩壊するでしょうか?

誰もがこの同じ状況に直面し、WCFのアプローチを試したり評価したりした場合、私たちはそれについて聞きたいと思うでしょう。

答えて

1

私はこのような状況を実装していません。しかし、私は、デュプレックスバインディングの1つが必ずしも高いオーバーヘッドを持つとは思わないでしょう。

すべては、サーバーがクライアントに送り返す必要のある情報の量によって異なります。情報がUIを更新するために使用されるとあなたは理解しています。しかし、同時に同じ量の情報を必要とするとは限りません。たとえば、西部地域に関する情報が変更された場合、1000人のクライアントすべてが変更があることを知りたいかもしれませんし、西部地域に関するサマリーレベルの情報を更新したいかもしれませんが、変更の詳細を確認する必要があります。

この場合、コールバックはの情報を提供することをお勧めします。は主に概略レベルで変更されています。変更の詳細に興味のあるクライアントに詳細を聞かせてください。上位1〜2階層のすべての詳細を提供し、残りの部分については、これが「時に変更されました。に変更されました」という情報を含むだけです。このようにして、特定のクライアントが見ている階層のレベルに応じて、クライアントは要求するかどうかを尋ねることができます。

必要に応じて、バッチ更新を一緒に行うことができます。クライアントが1秒に1回だけ更新する必要がある場合は、最後の1秒間の変更を蓄積して一度に送信することができます。

また、一部のタスクでピアツーピアバインディングを使用することもできます。おそらく、あなたのビジネスの特定の分野のクライアントは、お互いが何をしているのか少し知りたいと思うでしょう。

+0

バッチ更新など、私が議論して考えている多くのことに触れています。私は環境について完全には説明していないが、地理的に隣接した建物では、同じ物理LAN上に約1,000人のユーザーがいることを強調しています。データは複数の垂直領域にまたがっているわけではなく、すべてのユーザーが同じデータを見ているだけで、一部はアイテムを編集している可能性があります。私はあなたの答えが役に立ったと思うので+1しますが、誰かがこれを試してみて、パフォーマンスやリソースの問題を知っているかどうかを見ていきます。ありがとうございました。 – blu

+0

実際、私はこれの結果を学ぶことに興味があります。少なくともあなたがするかもしれない概念の証明。あなたがブログを書くのは素晴らしいことです(ヒント、ヒント)。 –

関連する問題