0

私は現在、新しい残りのインターフェイスを追加するプロジェクトに取り組んでいます。応答をいくつかのオブジェクトに変換する汎用コンバーターを作成しました。今、私はこれらのオブジェクトを変換する必要があるかどうかを自問しています.rest-interface オブジェクトと呼び、モデルとなる新しいオブジェクトのセットにします. ほとんどの場合、データは同じですが、データの表現が異なる場合があります。たとえば、残りの応答にはタイムスタンプとして日付が含まれますが、モデル オブジェクトには日付オブジェクトが含まれます。

もう1つの良い点は、残りのインターフェイスをsoapなどに変更することにした場合、クライアントコードはモデルオブジェクトにのみ依存するため、変換のみを行う必要があることです。1 つの欠点は、何かを変更する必要がある場合、2 つの場所で変更する必要があることです。

このトピックに関するベストプラクティスが何であるかはわかりません。また、残りのインターフェイス オブジェクトをモデル オブジェクトに変換するのはやり過ぎです (要求を送信する方法と応答する方法の両方)。これについていくつかの考えを聞いてうれしいですし、誰かがこれをよく説明するリソースを知っているかもしれません.

4

1 に答える 1

1

「時期尚早の最適化」について聞いたことがありますか? 一般的に、アプリケーションを設計するときのパフォーマンスはあまり気にしません。読みやすく、保守が容易で、将来の拡張が容易で、一般的には将来も保証されるコードを作成するようにしてください (たとえば、REST から SOAP への切り替えは、必要以上に手間がかかるべきではありません。これは、当初考えていたよりも現実的なシナリオかもしれません。一瞬)。パフォーマンスが向上する可能性があるという理由だけで、または「優れた設計」のパフォーマンスが低い可能性があると考えているという理由だけで、悪い設計を採用するべきではありません。

正直なところ、1 秒間に何回の REST 呼び出しを行う予定ですか? また、1 つの REST 結果内に何百万個のオブジェクトがあるでしょうか? 可能な限り最高の設計を作成し、後でパフォーマンスのボトルネック (浪費されている CPU 時間、メモリが浪費されているなど) を見つけたら、それらのボトルネックを最適化して取り除きます。運が良ければ、最初からボトルネックはありません。あなたの主な関心事が、この地球上でこれまでに見たことのない最速のコードを作成することである場合、最初から Java を使用しないでしょう。おそらく、可能な限り最低レベルの C を使用し、最後のコードを絞り出す必要がある場合はインライン アセンブリを使用します。 CPU のパフォーマンスの低下。

したがって、REST API に基づいて設計をモデル化するのではなく、アプリケーションの残りの部分をコーディングするのが最も簡単な方法であると思う方法で設計をモデル化し、REST を自分の API に変換するインポーター/エクスポーターを作成します。 design と my design を REST に。その後、SOAP などの別のテクノロジに切り替える場合は、アプリケーション全体ではなく、インポーター/エクスポーターを書き直すだけで済みます。

ただし、例外もあります。個人的には、オブジェクト指向言語の日付オブジェクトは嫌いです。タイムスタンプは完全な日付表現のIMHOであり、操作が非常に簡単で(比較、オフセットの加算/減算など)、メモリオーバーヘッドが非常に低くなります(数値のみ、通常はプリミティブであり、メモリ割り当てでさえありません)必要)。したがって、日付オブジェクトが必要でない限り、この値を必要に応じて保存または表示できないため、タイムスタンプをタイムスタンプのままにし、将来SOAPに切り替えてタイムスタンプの代わりに日付を提供する場合は、それらをタイムスタンプに変換しますインポーターで、エクスポーターで日付に戻ります。しかし、これは私だけです。

于 2013-01-08T19:28:05.550 に答える