ソケット接続を待っているマルチスレッド サーバーがあります。
メッセージの最初の交換は常に同じタイプであり、クライアントは認証の詳細 (userid/pwd) を含むオブジェクトを送信し、サーバーはそれをチェックして、認証が成功したかどうかをサーバーに返信します。
この最初のメッセージ交換の後、クライアントは、サーバーが実行できるさまざまなタスクに対応するいくつかの要求を送信します。これらの不均一な要求をどのようにモデル化しますか? 特に、私の質問は、InputObjecStream/OutputObjectStream を使用してクライアントとサーバーの間で送信されるオブジェクトのタイプに関するものです。
私には2つのアイデアがありました:
2 つの属性を持つ「ジェネリック メッセージ」オブジェクトを使用します: タスク識別子と、ジェネリックなしの HashMap で、タスクの実行に要求されたさまざまなタイプのパラメーターを運ぶことができます。
すべてのタイプのタスクのオブジェクト。このソリューションは「よりクリーン」ですが、受信したメッセージのタイプをサーバーに理解させる方法がわかりません。クライアントから受信したメッセージの一連のオブジェクトキャストについて考えました多くの CastException を無視して、考えられるすべての「特定のタスク メッセージ」。悪いように聞こえますが、これを回避する方法はありますか?