1

内部使用のために gwt ウィジェット ライブラリを作成しています。gwt ウィジェットのいずれかのコントロールでイベントが発生するたびに、イベントを発生させるように求められます。これは、ウィジェットを使用しているアプリケーションまたはプロジェクトによってリッスンされます。この概念は、同じページの異なる領域に表示される異なるビュー間で通信するために、以前に他の gwt プロジェクトで使用したイベント バスに似ているように見えました。アプリケーション全体でイベントバスの同じインスタンスを使用していたので、うまくいきました。しかし今、私は自分のプロジェクトでイベント バスの特定のインスタンスを使用していますが、それを使用するアプリケーションは同じインスタンスを使用していません。先に進んでそれを使用しますか、それとも異なるアプリケーション間でイベントを発生させる別の方法がありますか? 助けてください

4

2 に答える 2

3

まず、「さまざまなアプリケーション」とは何ですか? それらは同じブラウザで実行されますか? それらは同じサーバーに展開されますか?

EventBusアプリケーションが共通の を共有していない場合、アプリケーション間の通信に を使用することはできませんEventBus

アプリケーションが同じタブで実行されている場合はEventBus、静的変数に格納して、同じタブ内の他のアプリケーションから取得できます。

アプリケーションが同じブラウザー (異なるタブ) で実行されている場合は、 を使用LocalStorageして通信できます。あなたは見ることができます:

GWT は、LocalStorage(およびSessionStorage)の実装を提供しcom.google.gwt.storage.client.Storageます。

それらが同じブラウザで実行されていない場合は、あるアプリケーションから別のアプリケーションに通信するためにサーバーへの往復を行う必要があります (RPC を使用してメッセージを送信し、RPC ポーリングを使用して新しいメッセージを確認するか、またはサーバー プッシュ手法については、GWTEventServiceおよびServerPushFAQを参照してください)。

それらが同じサーバーにデプロイされていない場合は、サーバーへのラウンドトリップを実行し、サーバー間で通信する必要があります (ソケット、RPC、Web サービスなどを使用)。

于 2012-11-29T17:28:37.757 に答える
0

RabbitMQ は、この種の問題に対する標準的な解決策です。

http://www.rabbitmq.com/

ハードウェアバスがコンピューターシステムにあるのと同じように、ソフトウェア用のバスとして作成されました。

http://manning.com/videla/の本が特に好きです。アプローチについて詳しく説明し、ソース コードとその背後にあるアーキテクチャの概要を示します。非常に実用的です。

于 2012-11-29T12:42:08.773 に答える