web-dev-qa-db-ja.com

SOAP Webサービスの上にREST APIレイヤーを構築する

SOAP Webサービスの上にREST APIレイヤーを構築する必要があります。

現在の状況では、どちらも異なるサーバーで実行されている、Webサービスと通信するcoldfusionアプリケーションがあります。 Webサービスにはレストサポートがありません。また、近い将来、そのようなことをサポートすることもありません。したがって、これを実現するには、SOAP Webサービスとアプリケーションの間に残りのレイヤーを配置する必要があります。

結局、コールドフュージョンアプリケーションを新しい言語に移動したいので、コールドフュージョンで「レイヤー」を構築したくありません。そのため、レイヤーはより将来の証明言語で書くことができます。

ただし、このアプローチで気になるのは、データを取得するために必要な追加の呼び出しです。

古い:クライアント-> soap呼び出し->応答新しい:クライアント->残りの呼び出し-> soap呼び出し->応答

だから私の質問は:

  • 余分な呼び出しはパフォーマンスの点でどれほど悪いでしょうか?
  • いくつかをキャッシュするのは良い考えでしょうか?
  • それとも、別のアプローチで目標を達成できるでしょうか。
2
Bram

過度の間接参照を除いて、任意のコンピュータープログラミング問題を間接参照で解決できます。

ここであなたの考えを見ることができると思います。 Webサービスのクライアントとなる新しいアプリケーションに移動したいが、古くて日付の古いWebサービスの不機嫌さを、Nice新しいクリーンアプリケーションで取得したくない場合。したがって、古いWebサービスをRESTでラップすることで保護する必要があります。

このアイデアはうまくいくかもしれませんが、悲劇的な欠陥があるかもしれません。 SOAP Webサービスがどのように設計されているかによります。RESTは単なるプロトコルではありません。これはプロトコルを構築するスタイルです。あなたのSOAP Webサービスは、忠実に従うことと互換性のない方法で設計されています。

このしつこい懸念は、私が何を言おうと、これが機能するようになるまで消えないので、これを機能させる最善の方法を示します。ここでは、SOAP Webサービスが存在することを忘れてください。

代わりに、RESTサービスを、アプリケーションが実際に必要とすることがわかっているものを中心に設計します。ここで最善のREST原則をすべて実行し、いつかはすべてをサポートしないでください。今日必要とされるものだけ。

ここでRESTアプリケーションをサポートできる設計が必要です。自分自身に質問してください:適切な方法でSOAP Webサービスにマップできますか?適応は重要な作業になる可能性があります。しかし、それができれば、アプリケーションをサポートするための適切に設計されたRESTインターフェースが提供されます。

私のお気に入りのテクニックの1つはドライブデザインを使用です。ここでは、最小限の労力でこのアプローチがあなたのケースにどれほど適しているかを評価できるようにする方法として、それを適用します。

確かにパフォーマンスはヒットするかもしれませんが、どれくらいかは決して推測しません。最も簡単なテストでどれだけできるかを測定します。このアプローチでは、アプリケーション全体を書き直す前にそのテストを構築できます。

上記と同じものを取得する差分パフォーマンステストを実行することもできますREST SOAPを介して直接テストします。これで、時間を比較するだけで、追加したオーバーヘッドのコストを正確に確認できます。

これはかなりの作業のように思えるかもしれませんが、とにかくあなたがしなければならなかったであろう作業です。それを前に置くことで、問題が他のデザインに浸透することを疑う前に問題を解決できます。

テストを高速化するには、これらのプロトコルを実行できるクライアントエミュレーションツール(Postman、Insomnia、Curlなど)に時間を費やすことを検討してください。

1
candied_orange

システムに新しいコンポーネントを追加すると、付加価値とコストの両方を追加できます。したがって、石鹸層の上に残りの層を構築する状況は、例えば、他のレストレイヤーの上にレストレイヤーを構築します。

メリットの例:
-残りのapiに対してより簡単なAPI /より速い開発(正しく記述されている場合、間違ってコーディングされている場合は逆になることもあります)

欠点の例:
-新しいコンポーネントの追加のメンテナンスコスト(デプロイメント、ハードデバッグ、コードの変更をミドルウェアに反映する必要があります)

考慮すべきトピックの例:
-認証プロセス
-一般的なタイムアウト
- エラー処理
-応答時間-SOAPサービスがミリ秒で応答する場合、全体的なリクエスト時間が最小であると予想される場合、追加のレイヤーを追加することは非常に便利です。一方、SOAPサービスの応答が2sと追加のレイヤーは50msを追加し、それはおそらく問題ではありません。
-soapコマンドを適切にマッピングしてリソースをリセットする(注意が必要で、ソリューションがさらに複雑になる可能性があります)

要約すると、追加のレイヤーを追加することが一般的な解決策です。ただし、特定のケースに合わせて調整するには、すべての長所と短所を考慮する必要があります。いつものように。

0