3

(の複製ではありません残りまたは石鹸を使用する必要があります。その質問には、オーバーヘッド以外の多くの引数を提供しない1つの回答しかありません)。

この質問を重複としてマークする前に、私より前に選択を行い、自分の経験に基づいて理由を説明している人々からの回答を探していることを考慮してください. 単に「オーバーヘッド」または「より複雑」と述べる回答は、そのプロファイルに適合しません。

質問は次のとおりです。

しばらく前に、Soap (PHP / Zend_Soap_Server、Zend_Soap_Autodiscover) を使用して新しい API のセットアップを開始しました。SOAP の操作方法は理解できましたが、その複雑さから、今後のメンテナンスにこれを選択するのが適切かどうか疑問に思います。

REST について聞いたことはありますが、経験はありません。

したがって、質問は次のとおりです。REST と SOAP の長所と短所は何ですか。また、新しい API (かなり複雑な API、ssl を使用する数十のメソッド、適切なセキュリティが必要など)、REST または SOAP を作成するときの提案は何ですか。

回答が REST と SOAP のバランスにかかっており、特定の依存関係または機能がスケールを傾ける可能性があると思われる場合は、知る必要があることを必ず尋ねてください。できるだけ早くお答えします。

API の機能の短いリスト:

  • 認証
  • フロントエンドの数学関数を実行する
  • バイナリ ファイルをフロントエンド (請求書) に提供する
  • 各種情報の基本CRUD

APIの場所は基本的に次のとおりです。

インターネット -> ウェブサイト -> [内部ネットワーク] -> API/バックエンド -> データベース

よろしくお願いいたします。

4

1 に答える 1

28

もちろん、これは非常に物議を醸すトピックですが、同時に、ほとんどの新しいサービスは多くの理由で REST です。この 2 つの違いについては (十分に文書化されているため) 説明しませんが、今日 (2012 年) REST を使用して新しいサービスを構築する理由について説明します。

  • REST ははるかに単純で、基本的には HTTP の上に構築するだけです
  • Web ブラウザーまたは curl やhttpieなどを使用して、REST サービスをテスト (およびデバッグ) できます。はい、これはSOAPでも技術的に可能ですが、SOAPスキーマをある程度理解する必要があります。
  • 同様に、HTTP にアクセスする方法があれば、REST クライアントを構築できます。SOAP には SOAP 対応のライブラリが必要です
  • REST はスタイルであり、HTTP の上に構築されますが、SOAP は HTTP (プロトコルでもあります) の上にある完全なプロトコルです。
  • SOAP は、WS-Security や WS-Encryption などのクレイジーな拡張プロトコルに行き着きます (基本的に、これらは、数十年前にインターネットの他の部分が HTTP のために解決した問題に対して、委員会によって設計された非常に複雑なソリューションです)。

インターネット上のいくつかの主要な API (Google、Facebook、Twitter など) を見回すと、多くの REST があり、SOAP はほとんどまたはまったくないことがわかります。SOAP インターフェースを持っているものは、それを使い続ける理由がほとんどないため、完全に非推奨にするか、ドロップします。

実際、大規模なサービスの多くは、さらに一歩進んで、XML またはその両方ではなく、JSON 形式の REST サービスのみを提供しています。なぜなら、SOAP 上の REST と同様に、JSON にはサイズと単純さの点で XML よりも多くの利点があるからです。 XML をサポートし続けることはあまり意味がありません。


また、SOAP と比較して REST には欠点がほとんどありません。

私が考えることができる唯一の実用的な考慮事項については、クライアントの観点からのものです. SOAP を使用すると (WSDL のため、作成することを前提としています)、SOAP 対応 IDE をサービス (VisualStudio など) に向けることができ、リモート サービスに基づいてネイティブ クライアント プロキシ API が生成されます。これは、起動と実行が迅速であるという点では多少優れていますが、独自の一連の欠点があります。サービスで定義されたオブジェクトを使用する必要があります (一方、REST では、データ マップが有効である限り、独自のオブジェクト定義を使用できます)。リモート サービスがバージョン管理を処理する方法 (またはしない方法) とその使用方法によっては、名前の変更などの単純な理由で、アプリの主要なチャンクを更新する必要が生じる場合があります。

サーバーの観点からは、REST ではなく SOAP を選択することによる技術的な利点はまったくわかりません。

TL;DR: SOAP が必ずしも悪いわけではありません。REST の方が優れているというだけです。

于 2012-12-12T23:39:57.017 に答える