0

私の質問は非常に簡単に公開できます。

その間でデータを共有するいくつかのアプリケーションがあります。(複数のコンピューター間での)そのデータ共有をサポートする方法が必要です。1つのアプリケーションがデータを変更した場合、他のアプリケーションにそのことを通知する必要があります。

私の質問は、どの技術が私に役立つかについてです。現時点で私が理解している解決策は、データを共有するデータベースと、データが変更されたときにすべてのアプリケーションに通知する外部のパブリッシュ/サブスクライブシステム( http://pubsub.codeplex.com/など)を用意することです。しかし、私はいくつかの有用な解決策が存在する可能性があると信じています。

その時のことを知っていますか?ありがとう。

4

4 に答える 4

2

うーん、このようなアーキテクチャにコミットするときは注意してください。実際にはうまく機能しません。最初の問題は、作成する大量のネットワークトラフィックであり、拡張性が高くないことです。さらに深刻なことに、同時実行の大きな問題が発生します。定義上、「データ変更」通知は遅れて配信され、注文される保証はありません。通知の間に十分な時間遅延がある限り、すべてがうまく機能し、サブシステムにデータの同期ビューを持つ機会を与えます。

しかし、負荷が増加し、通知がバッファリングされ始めると、そのカードの家は激しく崩壊します。サブシステムは、データの古いビューに関する決定を開始し、他のサブシステムによって保持されているビューと同期しなくなります。それについても何もできません。ネットワークを介して「ロック」することはできません。また、デバッグが非常に難しいため、同期の不一致は完全にランダムで偽物です。

一元化されたサーバーアプローチを追求すると、並行性の処理がはるかに簡単になります。

于 2010-05-05T11:31:47.650 に答える
0

SQL Serverを使用してデータを保存し、SQL Server通知サービス(http://msdn.microsoft.com/en-gb/library/ms172483(SQL.90).aspx)を使用してデータが変更されたときに通知を受け取ることができます。

于 2010-05-10T12:10:06.273 に答える
0

Javaを使用している場合、JMXはSunのJMXチュートリアルを思い浮かびます。それに対する多くのサポートがあり、使いやすいです。

于 2010-05-05T09:32:46.843 に答える
0

Windows Communication Foundation (WCF) を使用して、クライアントとサーバー間の通信を行うことができます。通信は 2 つの方法で行うことができるため、クライアントは変更についてサーバーに通知でき、サーバーは通知を受け取る必要があるすべての関連クライアントにメッセージをプッシュします。双方向通信は、WCFでは二重コントラクトと呼ばれます。そうすれば、データベースが本当に必要ない場合は、データベースを使用する必要はありません。

于 2010-05-05T10:35:35.303 に答える