web-dev-qa-db-ja.com

Representational State Transfer(REST)およびSimple Object Access Protocol(SOAP)

誰かが _ rest _ とは何か、そして _ soap _ とは何なのか、わかりやすい英語で説明できますか。そしてWebサービスはどのように機能するのでしょうか。

711
Vicky

SOAPとRESTに関する簡単な説明

SOAP - "シンプルオブジェクトアクセスプロトコル"

SOAPは、インターネットを介してメッセージまたは少量の情報を転送する方法です。 SOAPメッセージはXMLでフォーマットされており、通常はHTTP(ハイパーテキスト転送プロトコル)を使用して送信されます。


休息 - 代表状態転送

Restは、クライアントとサーバー間でデータを送受信するための簡単な方法であり、あまり多くの標準が定義されていません。データをJSON、XML、またはプレーンテキストとして送受信できます。 SOAPと比べて軽量です。


enter image description here

1585
Nakkeeran

両方の方法は、大規模なプレーヤーの多くで使用されています。それは好みの問題です。私の好みはRESTです。使用と理解が簡単だからです。

Simple Object Access Protocol(SOAP):

  • SOAPは、HTTPまたはTCP/IPの上にXMLプロトコルを構築します。
  • SOAPは、関数とデータの種類を記述します。
  • SOAPはXML-RPCの後継であり、非常に似ていますが、標準的な通信方法について説明しています。
  • いくつかのプログラミング言語は、SOAPをネイティブでサポートしています。通常は、WebサービスURLをフィードし、特定のコードを必要とせずにWebサービス関数を呼び出すことができます。
  • 送信されるバイナリデータは、まずbase64エンコードなどの形式にエンコードする必要があります。
  • 関連するいくつかのプロトコルとテクノロジー:WSDL、XSD、SOAP、WS-Addressing

Representational State Transfer(REST):

  • RESTはHTTP経由である必要はありませんが、以下の私のポイントのほとんどにはHTTPバイアスがあります。
  • RESTは非常に軽量で、ちょっと待ってください。SOAPが作成したこの複雑さのすべては必要ありません。
  • 通常、すべてを記述する大きなXML形式ではなく、通常のHTTPメソッドを使用します。たとえば、リソースを取得するにはHTTP GETを使用し、サーバーにリソースを配置するにはHTTP PUTを使用します。サーバー上のリソースを削除するには、HTTP DELETEを使用します。
  • RESTは、HTTP GET、POSTおよびPUTメソッドを使用してサーバー上のリソースを更新するという点で非常に単純です。
  • 通常、RESTは Resource Oriented Architecture (ROA)で使用するのが最適です。この考え方では、すべてがリソースであり、これらのリソースを操作します。
  • プログラミング言語にHTTPライブラリがあり、ほとんどの場合は、REST HTTPプロトコルを非常に簡単に使用できます。
  • バイナリデータまたはバイナリリソースは、要求に応じて簡単に配信できます。

GoogleのREST vs SOAPでの無限の議論 があります。

私のお気に入りはこれです 。更新2013年11月27日:Paul Prescodのサイトはオフラインになったようで、この記事は利用できなくなりましたが、コピーは Wayback Machine またはPDFで入手できます- CiteSeerX

321
Brian R. Bondy

REST

RESTの主なアイデアは非常にシンプルだと理解しています。私たちは何年もウェブブラウザを使ってきましたが、ウェブサイトがどれほど簡単で、柔軟性があり、パフォーマンスが良いかを見てきました。 HTMLサイトは、ユーザーとの対話の主要な手段としてハイパーリンクとフォームを使用します。彼らの主な目標は、クライアントが、現在の状態で使用できるリンクのみを知ることです。 RESTは単に、「アプリケーションを介して人間のクライアントではなく、同じ原理を使用してコンピューターを駆動しないのはなぜですか」と言います。これをWWWインフラストラクチャのパワーと組み合わせると、優れた分散アプリケーションを構築するためのキラーツールが得られます。

別の考えられる説明は、数学的に考える人々に対するものです。各アプリケーションは基本的に、状態遷移であるビジネスロジックアクションを持つ状態マシンです。 RESTの考え方は、各遷移をリソースへのリクエストにマッピングし、現在の状態で利用可能な遷移を表すリンクをクライアントに提供することです。したがって、表現とリンクを介してステートマシンをモデル化します。これが、REpresentational State Transferと呼ばれる理由です。

すべての回答がメッセージ形式またはHTTP動詞の使用に焦点を当てているように見えることは非常に驚くべきことです。実際、メッセージの形式はまったく関係ありません。RESTは、サービス開発者が文書化する限り、どの形式でも使用できます。 HTTP動詞は、サービスをCRUDサービスにするだけで、まだRESTfulではありません。サービスを実際にRESTサービスに変えるのは、データとともにサーバー応答に埋め込まれたハイパーリンク(別名ハイパーメディアコントロール)であり、その量はクライアントがそれらのリンクから次のアクションを選択するのに十分でなければなりません。

残念ながら、 Roy Fieldingの論文 を除いて、Web上のRESTで正しい情報を見つけるのはかなり困難です。 (彼はRESTを派生させた人です)。 SOAPからRESTへの発展方法に関する包括的なステップバイステップのチュートリアルを提供するため、 'REST in Practice'本 をお勧めします。

SOAP

これは、RPC(リモートプロシージャコール)アーキテクチャスタイルの可能な形式の1つです。本質的には、クライアントがローカルメソッドを呼び出しているかのように、サービス境界(ネットワーク、プロセスなど)を介してサーバーのメソッドを呼び出すことを可能にするテクノロジーです。もちろん、実際にはローカルメソッドの呼び出しとは速度や信頼性などが異なりますが、アイデアは簡単です。

Compared

トランスポートプロトコル、メッセージ形式、xsd、wsdlなどの詳細は、任意の形式のRPCをRESTと比較するときに重要ではありません。主な違いは、RPCサービスは、RPC APIで独自のアプリケーションプロトコルを設計し、それだけが知っているセマンティクスで自転車を再発明することです。したがって、すべてのクライアントはサービスを使用する前にこのプロトコルを理解する必要があり、すべてのリクエストの独自のセマンティクスにより、キャッシュなどの汎用インフラストラクチャを構築することはできません。さらに、RPC APIは、現在の状態で許可されるアクションを提案していません。これは、追加のドキュメントから導出する必要があります。一方、RESTは、統一されたインターフェイスを使用して、さまざまなクライアントがAPIセマンティクスを理解し、ハイパーメディアコントロール(リンク)が各状態で使用可能なオプションを強調表示することを意味します。したがって、応答をキャッシュしてサービスを拡張し、追加のドキュメントなしで正しいAPI使用を簡単に発見できるようにします。

ある意味では、SOAP(他のRPCと同様)は、接続メディアをメッセージのみを送信できるブラックボックスとして扱うサービス境界をトンネリングする試みです。 RESTは、Webが巨大な分散情報システムであることを認め、世界をそのまま受け入れ、それと戦うのではなくマスターすることを学ぶという決定です。

SOAPは、サーバーとクライアントの両方を制御し、相互作用があまり複雑ではない場合、内部ネットワークAPIに最適のようです。開発者が使用する方が自然です。ただし、多くの独立したパーティで使用されているパブリックAPIの場合、複雑で大きく、RESTはより適切です。しかし、この最後の比較は非常にあいまいです。

Update

私の経験では、RESTの開発はSOAPよりも難しいことが予想外に示されました。少なくとも.NETの場合。 ASP.NET Web APIのような優れたフレームワークがありますが、クライアント側プロキシを自動的に生成するツールはありません。 「Webサービス参照の追加」や「WCFサービス参照の追加」のようなものはありません。すべてのシリアル化およびサービスクエリコードを手動で記述する必要があります。そして、男、それは定型的なコードの多くです。 RESTの開発には、各開発プラットフォームのWSDLおよびツールの実装に類似したものが必要だと思います。実際、 WADL または WSDL 2.0 という良い根拠があるようですが、どちらの標準も十分にサポートされていないようです。

更新(2016年1月)

現在、REST AP​​I定義用の 幅広い種類のツール があります。私の個人的な好みは現在 RAML です。

Webサービスの仕組み

それは、特定のWebサービスで使用されるアーキテクチャとテクノロジーに依存するため、これはあまりにも広範な質問です。しかし、一般に、Webサービスは、クライアントからの要求を受け入れて応答を返すことができるWebの単なるアプリケーションです。 Webに公開されているため、webサービスであり、通常は年中無休で利用できるため、serviceです。もちろん、クライアントのいくつかの問題(そうでなければ、誰かがWebサービスを使用する理由)を解決します。

254
Pavel Gatilov

これが最も簡単な説明です。

この記事は夫に妻の物語を連れて行きます、そこで夫は純粋な素人の言葉でRESTについて彼の妻に説明します。必読!

私の妻への安らぎの説明 (元のリンク)
私の妻への安らぎの仕方 (2013-07-19ワーキングリンク)

39
Vinay Wadhwa

SOAP-シンプルオブジェクトアクセスプロトコルプロトコルです

REST-REpresentational State Transferアーキテクチャスタイルです

SOAPは、通常HTTP経由でメッセージを転送するために使用されるXMLプロトコルです

RESTSOAPは、ほぼ間違いなくnot相互に排他的です。 RESTfulアーキテクチャは、HTTPまたはSOAPまたはその他の通信プロトコルを使用する場合があります。 RESTはWeb用に最適化されているため、HTTPが最適です。 HTTPは、Roy Fieldingの論文で説明されているonlyプロトコルでもあります。

RESTとSOAPは明らかに大きく異なりますが、この質問は、RESTHTTPがタンデムでよく使用されるという事実を明らかにしています。これは主に、HTTPの単純さと、RESTful原則への非常に自然なマッピングによるものです。

基本的なREST原則

クライアントサーバー通信

クライアント/サーバーアーキテクチャでは、懸念事項が非常に明確に分離されています。 RESTfulスタイルで構築されたすべてのアプリケーションは、原則としてクライアントサーバーでもある必要があります。

ステートレス

サーバーへの各クライアント要求では、その状態が完全に表現されている必要があります。サーバーは、サーバーコンテキストまたはサーバーセッション状態を使用せずに、クライアント要求を完全に理解できる必要があります。したがって、すべての状態をクライアントで保持する必要があります。ステートレス表現については、後で詳しく説明します。

キャッシュ可能

キャッシュ制約を使用すると、応答データをキャッシュ可能またはキャッシュ不可としてマークできます。キャッシュ可能としてマークされたデータは、同じ後続リクエストへの応答として再利用できます。

niform Interface

すべてのコンポーネントは、単一の統一されたインターフェイスを介して対話する必要があります。すべてのコンポーネントの対話はこのインターフェイスを介して行われるため、異なるサービスとの対話は非常に簡単です。インターフェイスは同じです!これは、実装の変更を単独で行えることも意味します。均一なインターフェースは常に変更されないため、このような変更は基本的なコンポーネントの相互作用には影響しません。欠点の1つは、インターフェイスにこだわることです。インターフェイスを変更することで特定のサービスに最適化を提供できる場合、RESTがこれを禁止しているため、運が悪いです。ただし、明るい面では、RESTはWeb用に最適化されているため、HTTPを介したRESTの人気が非常に高くなっています。

上記の概念は、RESTの特性の定義を表し、RESTアーキテクチャをWebサービスなどの他のアーキテクチャと区別します。 RESTサービスはWebサービスですが、Webサービスは必ずしもRESTサービスであるとは限らないことに注意してください。

RESTおよび上記の箇条書きの詳細については、このブログを参照してください post on REST Design Principals.

37
cmd

Brian R. Bondyの回答が好きです。私はちょうどWikipediaが _ rest _ の明確な説明を提供することを付け加えたいと思いました。記事はそれをSOAPと区別します。

RESTは、可能な限り簡単に行われる状態情報の交換です。

SOAPはXMLを使用するメッセージプロトコルです。

多くの人がSOAPからRESTに移動した主な理由の1つは、SOAPベースのWebサービスに関連付けられているWS- *(WS splatと呼ばれる)標準です。非常に複雑です。仕様の一覧については wikipedia を参照してください。これらの各仕様は非常に複雑です。

編集:何らかの理由でリンクが正しく表示されません。 REST = http://en.wikipedia.org/wiki/REST

WS- * = http://en.wikipedia.org/wiki/WS- *

12
David G

SOAP webservicesとREST webservicesの両方とも、HTTPプロトコルとその他のプロトコルを使用することができます(SOAPはRESTの基礎となるプロトコルになります)。 HTTPプロトコル関連のSOAPとRESTについてのみ説明します。これが最も頻繁に使用されるためです。

SOAP

SOAP ( "単純な"オブジェクトアクセスプロトコル)はプロトコルです(そして W3C標準 )。 SOAPメッセージを作成、送信、および処理する方法を定義します。

  • SOAPメッセージは、特定の構造を持つXML文書です。ヘッダーと本体セクションを含むエンベロープが含まれています。本文には実際に送信したいデータがXML形式で含まれています。 2つのエンコーディングスタイル がありますが、 通常はリテラルを選択します 、つまりアプリケーションまたはそのSOAPドライバがXMLのシリアル化とデータのシリアル化解除を行います。

  • SOAPメッセージは、SOAP + XML MIMEサブタイプを持つHTTPメッセージとして送信されます。これらのHTTPメッセージはマルチパートになる可能性があるので、オプションでSOAPメッセージにファイルを添付することができます。

  • 明らかに我々はクライアント - サーバアーキテクチャを使用しているので、SOAPクライアントはSOAP websericesにリクエストを送り、サービスはレスポンスをクライアントに送り返します。ほとんどのWebサービスはWSDLファイルを使用してサービスを記述します。 WSDLファイルには、送信したいデータのXMLスキーマ(以降XSD)と、WebサービスをHTTPプロトコルにバインドする方法を定義するWSDLバインディングが含まれています。 2つのバインディングスタイル :RPCとdocumentがあります。 RPCスタイルのバインディングにより、SOAP本体には、パラメータ(HTTP要求)または戻り値(HTTP応答)を含むオペレーション呼び出しの表現が含まれています。パラメータと戻り値はXSDに対して検証されます。ドキュメントスタイルのバインディングにより、SOAP本体にはXSDに対して検証されたXMLドキュメントが含まれます。ドキュメントのバインディングスタイルはイベントベースのシステムに適していると思いますが、そのバインディングスタイルは使用しませんでした。 RPCバインディングスタイルはより普及しているため、ほとんどの人は分散アプリケーションによるXML/RPC目的でSOAPを使用します。 Webサービスは通常 UDDI サーバーに問い合わせることでお互いを見つけます。 UDDIサーバーは、Webサービスの場所を格納するレジストリです。

SOAP RPC

だから - 私の意見では - 最も普及しているSOAP webサービスはRPCバインディングスタイルとリテラルエンコーディングスタイルを使用していて、それは以下の特性を持っています:

  • URLを操作にマッピングします。
  • SOAP + XML MIMEサブタイプでメッセージを送信します。
  • サーバー側のセッションストアを持つことができます、それについての制約はありません。
  • SOAPクライアントドライバは、サービスのWSDLファイルを使用してRPC操作をメソッドに変換します。クライアント側アプリケーションは、これらのメソッドを呼び出すことによってSOAP Webサービスと通信します。そのため、SOAPクライアントのほとんどは、インタフェースの変更(結果として得られるメソッド名やパラメータの変更)によって中断されます。
  • SOAPを使用してインタフェースの変更で壊れないようなRDFクライアントを作成し、セマンティクスでオペレーションを見つけることは可能ですが、 semantic webservice は非常にまれであり、使用しません必ずしも壊れないクライアントを持っているわけではない(私は思う)。

REST

REST(Representational State Transfer)はRoy Fieldingの 論文 で説明されているアーキテクチャースタイルです。 SOAPのようなプロトコルについては関係ありません。それは制約のないnullアーキテクチャスタイルで始まり、RESTアーキテクチャの制約を一つずつ定義します。すべてのREST制約を満たすWebサービスにはRESTfulという用語を使用しますが、Roy Fieldingによれば、 REST levels などはありません。 WebサービスがすべてのREST制約と一致しない場合は、REST Webサービスではありません

REST制約

  • クライアント - サーバーアーキテクチャー - 私はこの部分は誰にでもよく知られていると思います。 RESTクライアントはREST Webサービスと通信し、Webサービスは共通のデータ(以降リソース状態)を維持し、それをクライアントに提供します。
  • ステートレス - 略語の「状態転送」の部分:REST。クライアントはクライアントの状態(セッション/アプリケーションの状態)を維持するので、サービスはセッションストレージを持ってはいけません。クライアントは、要求ごとにクライアント状態の関連部分をサービスに転送し、サービスはリソース状態の関連部分(それらによって維持される)で応答します。そのため、リクエストにはコンテキストがなく、リクエストを処理するために必要な情報が常に含まれています。たとえばHTTP基本認証では、ユーザー名とパスワードはクライアントによって保存され、リクエストごとに送信されるため、認証はリクエストごとに行われます。これは、認証がログインによってのみ行われる通常のWebアプリケーションとは大きく異なります。必要に応じて、クライアント状態の一部を保持するために、インメモリ(javascript)、cookie、localStorageなどのようなクライアント側のデータ保存メカニズムを使用できます。ステートレスな制約の理由は、非常に高い負荷(何百万ものユーザー)があっても、すべてのクライアントのセッションを維持する必要がないときに、サーバーが適切に拡張されることです。
  • キャッシュ - レスポンスには、クライアントがキャッシュできるかどうかについての情報が含まれている必要があります。これにより、スケーラビリティがさらに向上します。
  • 均一なインターフェース

    • リソースの識別 - REST resourceは RDF resourceと同じです。 Fieldingによれば、何か名前を付けることができれば、それはリソースになることができます。例えば、「現在の現地の天気」がリソースになる、または「あなたの携帯電話」がリソースになる、または「特定のWeb文書」になります。リソースリソースを識別するために、リソース識別子を使用することができます。URLとURN(例えば 書籍別のISBN番号 )。単一の識別子は特定のリソースにのみ属するべきですが、単一のリソースは多くの識別子を持つことができます。これは、たとえばhttps://example.com/api/v1/users?offset=50&count=25のようなURLを使用したページ付けによって頻繁に利用されます。 URLにはいくつかの specification があります。たとえば、パスが同じでクエリの種類が異なる場合や、パス部分にURLの階層データを含み、クエリ部分に非階層データを含む場合などです。これらはRESTによってURLを作成する方法の基本です。ところで。 URL構造はサービス開発者だけに関係します、本当のRESTクライアントはそれに関係がありません。もう1つのよくある質問はAPIのバージョン管理です。これは簡単なものです。意味が変わった場合は、新しいバージョン番号を追加できます。古典的な 3 number versioning を使用して、メジャー番号だけをURLに追加することができます(https://example.com/api/v1/)。そのため、下位互換性のある変更では何も起こりません。下位互換性のない変更では、新しいAPIルートhttps://example.com/api/v2/を持つ下位互換性のないセマンティクスが得られます。古いクライアントはhttps://example.com/api/v1/を古い意味で使うことができるので、古いクライアントは壊れません。
    • 表現によるリソースの操作 - 意図したリソースの表現をHTTPメソッドおよびリソース識別子とともにRESTサービスに送信することで、リソースに関連するデータ(リソース状態)を操作できます。たとえば、結婚後にユーザーの名前を変更したい場合は、PATCH https://example.com/api/v1/users/1 {name: "Mrs Smith"}が目的のリソース状態のJSON表現である{name: "Mrs Smith"}要求を送信できます。つまり、新しい名前です。これは逆にも起こり、サービスはクライアントの状態を変更するためにリソースの表現をクライアントに送信します。たとえば、新しい名前を読みたい場合は、GET https://example.com/api/v1/users/1?fields="name"検索要求を送信すると、200 ok, {name: "Mrs Smith"}応答が返されます。したがって、この表現を使用してクライアントの状態を変更できます。たとえば、「Welcome to our page Mrs Smith!」というメッセージを表示できます。メッセージ。リソース識別子(URL)またはリクエストと共に送信したacceptヘッダーに応じて、リソースは多くの表現を持つことができます。例えばimage/jpegが要求されれば私達は夫人スミス(おそらく裸ではない)の画像を送ることができます。
    • 自己記述型メッセージ - メッセージには、それらの処理方法に関する情報が含まれている必要があります。たとえば、URIやHTTPメソッド、コンテンツタイプヘッダ、キャッシュヘッダ、データの意味などを記述するRDFなど。標準的なメソッドを使用することが重要です。 HTTPメソッドの specification を知ることは重要です。たとえば、GETはリクエストURLで識別される情報を取得することを意味し、DELETEはサーバーに指定されたURLで識別されるリソースを削除するように要求することを意味します。以下同様です。HTTPステータスコードには specification も含まれます。 200は成功を意味し、201は新しいリソースが作成されたことを意味し、404は要求されたリソースがサーバー上で見つからなかったことを意味します。など。既存の標準の使用はRESTの重要な部分です。
    • アプリケーション状態のエンジンとしてのハイパーメディア(以下HATEOAS) - ハイパーメディアはハイパーリンクを含むことができるメディアタイプです。 Webでは、URLをアドレスバーに入力するのではなく、目標を達成するためにハイパーメディア形式(通常はHTML)で記述されたリンクをたどります。 RESTは同じ概念に従い、サービスによって送信される表現にはハイパーリンクを含めることができます。これらのハイパーリンクを使用してサービスにリクエストを送信します。その応答によって、新しいクライアント状態を構築するために使用できるデータ(そしておそらくより多くのリンク)を取得します。それで、ハイパーメディアがアプリケーション状態(クライアント状態)のエンジンとなるのはそのためです。クライアントはどのようにしてハイパーリンクを認識し、それに従うのでしょうか。人間によってそれは非常に簡単です、私達はリンクのタイトルを読み、多分入力フィールドを埋め、そしてその後ただワンクリックするだけです。マシンによっては、RDF( JSON-LD with Hydra )またはハイパーメディア特有の解決策(例えば IANA))を使用してリンクに意味を追加する必要があります。リンク関係 および ベンダー固有のMIMEタイプ by HAL + JSON )。機械読み取り可能な XMLJSONハイパーメディアフォーマット がいくつかありますが、それらのほんの一部にすぎません。

      時にはそれを選択するのは難しいです...

  • 階層化システム - クライアントとサービスの間で複数の層を使用できます。それらの誰もがこれらの追加の層の全てについて、そのすぐ隣の層について知るべきではありません。これらのレイヤは、キャッシュと負荷分散を適用することによってスケーラビリティを向上させることができます。あるいは、セキュリティポリシーを強化することができます。
  • コードオンデマンド - クライアントの機能を拡張するコード、たとえばJavaScriptコードをブラウザに送り返すことができます。これはRESTの唯一のオプションの制約です。

REST Webサービス - SOAP RPC Webサービスの違い

そのため、REST WebサービスはSOAP Webサービスとは大きく異なります(RPCバインディングスタイルとリテラルエンコーディングスタイル)。

  • それは統一インターフェース(プロトコルの代わりに)を定義します。
  • URLをリソース(そして操作ではない)にマッピングします。
  • (SOAP + XMLだけでなく)任意のMIMEタイプでメッセージを送信します。
  • これはステートレスな通信を行うため、サーバー側のセッションストレージを持つことはできません。 (SOAPにはこれに関する制約はありません)
  • それはハイパーメディアに役立ち、クライアントはそのハイパーメディアに含まれるリンクを使ってサービスを要求します。 (SOAP RPCは、WSDLファイルに記述されている操作バインディングを使用します)
  • セマンティクスの変更だけでURLの変更によって壊れることはありません。 (RDFセマンティクスを使用しないSOAP RPCクライアントは、WSDLファイルの変更によって中断されます。)
  • ステートレスな動作のため、SOAP Webサービスよりも拡張性が優れています。

等々...

SOAP RPC Webサービスは、すべてのREST制約を満たしません。

  • クライアントサーバーアーキテクチャ - 常に
  • ステートレス - 可能
  • キャッシュ - 可能
  • ユニフォームインターフェース - 決して
  • 階層化システム - never
  • オンデマンドコード(オプション) - 可能
7
inf3rno

それでは、2番目の質問から始めましょう:Webサービスとは何ですか?、明らかな理由で。

WebServicesは本質的に特定の機能やデータを公開するロジック(あなたは漠然とメソッドと呼ぶかもしれません)の部分です。実装するクライアント(技術的に言うと、消費はWordです)は、methodが受け付けるパラメータと、そのデータのタイプを知っている必要があります(もしそうであれば)戻る。

次のLinkは、 _ rest _ _ soap _ について非常に明快な意味でそれをすべて言っています。

REST vs SOAP /

また、何を選択するか(RESTまたはSOAP)を知りたい場合は、それを通過するすべての理由があります。

6
Sayan

SOAPとRESTはどちらも、異なるシステムが互いに通信する方法を表します。

RESTは、ブラウザがWebサーバーとやり取りする通信に似た技術を使用してこれを行います。GETを使用してWebページを要求したり、フォームフィールドにPOSTを送信したりするなどです。

SOAPは似たようなものを提供しますが、XMLのブロックをやり取りすることですべてを行います。 SOAPのもう1つの重要な構成要素は、どの関数とデータ要素がサポートされているかを記述するXMLドキュメントであるWSDLです。 WSDLを使用して、プログラム的にどの機能がサポートされているかを発見したり、プログラミングコードスタブを生成したりできます。

5
pbreitenbach

RESTは、ネットワークアプリケーションを設計するためのアーキテクチャスタイルです。考え方は、CORBA、RPC、SOAPなどの複雑なメカニズムを使用してマシン間を接続するのではなく、単純なHTTPを使用してマシン間で呼び出しを行うことです。

2
Hulk1991

これは私が説明できるのと同じくらい簡単だと思います。どうぞ、誰でも私を直すか、これに加えて大歓迎です。

SOAPは、情報/データを交換するために(インターネットを介して)切断されたシステムによって使用されるメッセージフォーマットである。 XMLメッセージがやり取りされるのと同じです。

WebサービスはSOAPメッセージを送受信します。彼らは彼らがどの言語で書かれているかによって動作が異なります。

2
StingyJack

SOAPの問題は、HTTPスタックの背後にある理想と矛盾することです。どんなミドルウェアでもリクエストやレスポンスの内容を理解しなくてもHTTPリクエストを扱うことができるはずですが、例えば通常のHTTPキャッシュサーバはSOAPのどの部分だけを知らずにSOAPリクエストを扱うことはできません。 ]キャッシングのための内容の問題。 SOAPはプロキシのようにHTTPをそれ自身の通信プロトコルのラッパーとして使うだけです。

2
aehlke

SOAP - "シンプルオブジェクトアクセスプロトコル"

SOAP インターネット上でのメッセージの転送、または少量の情報のわずかなものです。 SOAP メッセージのフォーマットは XML そして一般的に制御されて送信されます HTTP

REST - "代表的な状態転送"

REST これは、ファンとサーバー間の不測の事態や情報の受信に関する初歩的な手続きであり、明確に定義された多くの標準がありません。として情報を送信して受け入れることができます JSON、 XML あるいはプレーンテキストさえ。に比べて軽量です SOAP

1
user4502652