JavaでWebサービスを学ぶ必要があります。その中の異なるタイプは何ですか?[閉まっている]


91

最近、Java Webサービスについて学び始めることを決め、GoogleでJava Webサービスのチュートリアルを検索し始めたとき、XMLベース、SOAPベース、RESTful Webサービスの多くのタイプのWebサービスがあることがわかりました。

また、XMLベースのWebサービス用のJAX-WS仕様と、RESTful Webサービスを作成するためのJAX-RS仕様があることがわかりました。

Q1)混乱しました。これらの異なるタイプのWebサービスの違いを理解してくれる人がいれば、どちらを先に学習するかを決定できるといいですね。

Q2)また、JavaでさまざまなタイプのWebサービスを作成する方法について詳しく学びたいと思います。各種類のWebサービスとそれらの比較を理解できるチュートリアルやリソースはありますか?

Q3)どのシナリオと条件に基づいて、SOAPサービスではなくXMLベースのWebサービスを作成するか、またはRESTfulサービスを使用するかを決定する必要があります。


回答:


142
  1. SOAP Webサービスは標準ベースであり、ほとんどすべてのソフトウェアプラットフォームでサポートされています。XMLに大きく依存しており、トランザクション、セキュリティ、非同期メッセージ、およびその他の多くの問題をサポートしています。これはかなり大きくて複雑な標準ですが、ほとんどすべてのメッセージング状況をカバーしています。一方、RESTfulサービスは、HTTPプロトコルと動詞(GET、POST、PUT、DELETE)に依存して、任意の形式(望ましいJSONとXML)のメッセージを交換します。これは非常にシンプルでエレガントなアーキテクチャアプローチです。
  2. Javaの世界のすべてのトピックと同様に、Webサービスを構築/使用するためのライブラリがいくつかあります。SOAP側にはJAX-WS標準Apache Axisがあり、RESTでは他のライブラリの中でRestletまたはSpring REST機能を使用できます。

質問3では、この記事では、RESTfulサービスはこのシナリオに適していると述べています。

  • 帯域幅が限られている場合
  • オペレーションがステートレスの場合:呼び出しから次の呼び出しまで情報は保持されず、各リクエストは個別に処理されます。
  • クライアントがキャッシュを必要とする場合。

SOAPは、次の場合に使用する方法です。

  • 非同期処理が必要な場合
  • 正式な契約/インターフェースが必要な場合
  • サービスではオペレーションがステートフルです。たとえば、リクエストに情報/データを保存し、次のリクエストでその保存されたデータを使用します。

11
+1が非常に明確で、シナリオを説明している:)
Rajesh Pantula

ぱりっとした明確な答え。
クリシュナ

良い答えの+1 ... !!!
Shailesh Saxena 2013

良い答えです。ステートレス/ステートフルオペレーションとは何ですか。
Keerthivasan 2013

それらの概念を含めて回答を編集しました。
Carlos Gavidia-Calderon

13

Q1)読んだり、Googleで読んだりすることがいくつかあります。

JavaのSOAP WebサービスとRESTful Webサービスの主な違い http://www.ajaxonomy.com/2008/xml/web-services-part-1-soap-vs-rest

最初に何を学びたいかはあなた次第です。CXFフレームワークをご覧になることをお勧めします。両方のREST / SOAPサービスを構築できます。

Q2)ここに石鹸の良いチュートリアルをいくつか示します(ブックマークしてもらいました)。

http://united-coders.com/phillip-steffensen/developing-a-simple-soap-webservice-using-spring-301-and-apache-cxf-226

http://www.benmccann.com/blog/web-services-tutorial-with-apache-cxf/

http://www.mastertheboss.com/web-interfaces/337-apache-cxf-interceptors.html

学ぶ最良の方法は、チュートリアルを読むことだけではありません。しかし、最初にチュートリアルを通して基本的なアイデアを得て、何かを生み出すことができるかどうかを確認し、モチベーションを上げることができます。

SOは特定のテクノロジー(またはそれ以上)を学ぶのに最適な方法であり、人々は奇妙な質問をたくさんします。しかし、全体として、他の方法で問題を解決する方法について学びます。たぶんあなたはその方法を知らなかったのかもしれないし、自分でそれを考えることができなかったのかもしれません。

あなたにとって興味深く、しつこいタグをいくつか購読し、良い質問をして、良い答えを出してみてください。時間がたつにつれてこれを学ぶことが保証されます(しつこい場合)。

Q3)自分で答える必要があります。最初に、何をビルドするかを決めることによって、結局のところ、いくつかのミニプロジェクトまたは何かについて考え、そこからそれを取得する必要があります。

REST / SOAPサービスを構築するためのフレームワークとしてCXFを使用する場合は、この本を参照することをお勧めしますApache CXF Web Service Development。それは素晴らしく、読みにくく、大きすぎません(勝利)。


7

SOAP WSは、リモートプロシージャコール(RPC)とメッセージ指向ミドルウェア(MOM)統合スタイルの両方をサポートしています。Restful Webサービスは、RPC統合スタイルのみをサポートします。

SOAP WSは、トランスポートプロトコルに中立です。HTTP(S)、メッセージング、TCP、UDP SMTPなどの複数のプロトコルをサポートします。RESTはトランスポートプロトコル固有です。HTTPまたはHTTPSプロトコルのみをサポートします。

SOAP WSはXMLデータ形式のみを許可します。POSTをトンネリングする操作を定義します。名前付きの操作にアクセスし、アプリケーションロジックをサービスとして公開することに重点を置いています。RESTは、XML、JSONデータ、テキスト、HTMLなどの複数のデータ形式を許可します。RESTアプローチは標準のGET、PUT、POST、およびDELETE Web操作を使用するため、任意のブラウザーを使用できます。名前付きリソースにアクセスし、データをサービスとして公開することに重点が置かれています。RESTはAJAXをサポートしています。XMLHttpRequestオブジェクトを使用できます。ステートレスCRUD(作成、読み取り、更新、削除)操作に適しています。GET-replace()POST-acceptRepresention()PUT-storeRepresention()DELETE-removeRepresention()

SOAPベースの読み取りはキャッシュできません。RESTベースの読み取りはキャッシュできます。パフォーマンスとスケーリングが向上します。SOAP WSはSSLセキュリティとWS-セキュリティの両方をサポートします。これにより、必要なところまでセキュリティを維持し、SSLだけを指すのではなく、仲介者を介してIDを維持し、メッセージのさまざまな部分を保護するなどのエンタープライズセキュリティ機能が追加されます。異なるセキュリティアルゴリズムなど。RESTはポイントツーポイントSSLセキュリティのみをサポートします。SSLは、すべての機密情報に関係なく、メッセージ全体を暗号化します。SOAPは、存続期間の短いトランザクションのACIDベースのトランザクション管理と長時間のトランザクションの補正ベースのトランザクション管理の両方を包括的にサポートしています。また、分散リソース全体の2フェーズコミットもサポートします。RESTはトランザクションをサポートし、

SOAPには、成功または再試行のロジックが組み込まれており、SOAP仲介者を介してもエンドツーエンドの信頼性を提供します。RESTには標準のメッセージングシステムがなく、サービスを呼び出すクライアントは再試行によって通信障害に対処することを期待しています。

ソース http://java-success.blogspot.in/2012/02/java-web-services-interview-questions.html


> Restful Webサービスは、RPC統合スタイルのみをサポートします。RESTはRPCではなく、RPCは「何かを行ういくつかのメソッドを定義する」と言いますが、RESTは「いくつかのリソースを定義すると、これらのメソッドを持つようになります」と言います。peej.co.uk/articles/rest.html
urmalp

0

アプリケーションがhttpプロトコルを頻繁に使用する場合、RESTは軽量であるため最適であり、SOAPを選択するとアプリケーションがhttpプロトコルのみを使用することがわかっているため、SOAPを選択するのはあまり良くないため、使用するプロトコルに基づいてWebサービスの選択を決定する方が良い私たちのアプリケーションで。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.