2011-09-29 8 views
1

リクエスト/レスポンスクライアントを実装しようとしています。これは基本的な実装です。リクエストレスポンスデザインの実装

Class Request 
{ 
    prepareRequest1(); 
    prepareRequest2(); 
} 

Class Response 
{ 
    processResponse1(); 
    processResponse2(); 
} 

Class Client 
{ 
    connect(); 
    sendRequest(); 
} 

myrequest = new Request(); 
client = new Client (myserver); 
my $rawResponse1 = client.sendRequest (myrequest.prepareRequest1()); 

myresponse = new Response(); 
myresponse.processResponse1 ($rawResponse1); 

私は、リクエスト、レスポンス、クライアントという3つのクラスを持っています。要求クラスには、要求に固有の関数が含まれています。これらの要求はXML要求です。 XMLリクエストには、初期タグの数が少ない(例:sessionidなど)以外は共通点がありません。他のすべてのXMLパラメータは、要求のタイプに固有です。だから、現在、私はそれをそれぞれの要求に対して別々の関数を作成することで手渡しています。私はスケーラビリティの問題があることを理解していますが、ここで私が適用できる他の最良のアプローチを教えてください。

リクエストと同様に、各リクエストに対するレスポンスには特定の処理が必要です。私は期待しているそれぞれのタイプの応答に特有の別個の機能を持っています。一般的には、要求と応答の間に1対1のマッピングがあると想定できます。

最後に接続するClientクラスです。

私はこのようなリクエストとレスポンスをほぼ50以上持っており、このアプローチで実装する予定です。私が開発の初期段階にあるので、そのような要求/応答を実装するためのいくつかの改善/ベストプラクティスを教えてください。

答えて

0

コードの外側でリクエストとレスポンスのマッピングを保持するのが最も良い方法です。管理が簡単です。あなたのリクエストとレスポンスのクラス名を格納するXML設定ファイルを、特定のタイプのxmlメッセージに関連付けてください。その後、クラス名を取得し、そのクラスに移動してリクエストとレスポンスを処理することができます。個別のメソッドではなく、これらのメッセージを処理するためのクラスを別々に持つのが最善です。それ以上の拡張性。すべてのリクエスト・クラスとレスポンス・クラスのインターフェースがあることを確認してください。これは...それは簡単にXML設定ファイルを変更することで簡単にあなたの要求応答のクラスを交換するようになります

は、あなたがそれを得たホープ:)

+0

Iメッセージ(要求/応答)のほとんど50+異なったタイプがあります。各メッセージに1つずつ、50のクラスを持つことは良いことですか? – rpg

+0

さらにクラスを持つことは、管理が容易である限り、犯罪ではありません。しかし、もう一度私の意見です。しかし、これらのクラスを管理する必要がなく、リクエストとクラスの間に1-1のマッピングが必要な場合は、私が示唆したように、クラブのようなリクエストを一緒にして、同じクラスを使ってサービスすることはできますが、どのxmlリクエスト - >どのクラスにマップされているかのマッピング - > xml設定ファイルのコード外のメソッドにマップされています。これにより最大限の柔軟性が得られます。クラスをインスタンス化し、リフレクションを介してメソッドを呼び出すことになります – sethu

+0

ありがとうございます。これはもっと有望です。 – rpg