0

クライアントサーバーアプリケーションを構築しています。サーバーはオブジェクトのリストを保持します。

 LinkedList<MyObject> objects;

オブジェクトが追加または削除されるたびに、クライアントはこれを知っている必要があります。彼らはすでにマルチキャストグループに参加しています。彼らに変更を通知し続けるための最良の方法は何ですか?

LinkedListを拡張するクラスを作成し、Serializableで実装する必要がありますか?

4

1 に答える 1

2

変更されるたびに更新されたリストをマルチキャストするのは確かに簡単ですが、問題が発生する可能性があります。

  • リストが大きくなったり、更新が頻繁に行われる場合は、スケーラビリティが問題になる可能性があります。毎回リスト全体を送信するのではなく、リストへの変更を「デルタ」として送信することを検討してください。

  • を使用したシリアル化はコストがかかる可能性がありますが、カスタム メソッドとメソッドObjectOutputStreamを作成することでパフォーマンスを向上させることができます。(リストのシリアル化は既に最適化されています...)readObjectwriteObject

  • これを行うためにサブクラス化LinkedListする必要はありません。それはもうSerializableです。

  • 競合状態や騒乱を避けるためにリスト構造を同期する必要がある可能性が最も高いですが、それは潜在的なボトルネックを作成します。をまたはListの同時実装に置き換えることを検討してください。QueueDeque

于 2012-10-23T13:11:17.077 に答える