RMI と JMS の両方を使用して、Java バックエンドに接続されたリッチ クライアント (Flex で記述) に取り組んでいます。クライアントを DDD 方式で実装して、ドメイン オブジェクトに対する CRUD 操作用のリポジトリを作成することを考えていました。
ただし、問題は、すべてのバックエンド通信が非同期で発生し、クライアントが応答を受信するまで強制的に続行を待機させる方法がないことです。つまり、低レベルでは、リモート オブジェクトのメソッドを呼び出すことができ、戻り値として AsyncToken を取得できます。その後、asynctoken のイベントをリッスンして、呼び出しが成功したか失敗したかを確認できます。ただし、これはリポジトリの背後にある主なアイデアを壊し、技術的な詳細をクライアントから隠します。
私が推測する2つのオプションがあるかもしれません:
- リポジトリのメソッドが asynctoken を返すようにします。これは面倒な解決策のように思えます。
- メソッドが空のコレクション (たとえば、findAll の場合) を返すようにします。このコレクションは、応答を受信したときに満たされます。
どちらも一長一短ありますので、皆様のご意見をお聞かせいただければと思います。
(これをさらに進めると、適切なキャッシュ戦略は何でしょうか?状況によっては、リポジトリからすべてのエンティティを要求するたびにリポジトリがサーバーを呼び出すことは望ましくありません。リポジトリのメソッドの署名にどのように影響しますか? )