web-dev-qa-db-ja.com

JavaでWebサービスを学ぶ必要があります。それにはさまざまな種類がありますか?

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

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

Q1)私は混乱しました。だれかがこれらの異なるタイプのウェブサービスの違いを理解するのを助けてくれれば、どれを最初に学ぶべきかを決めることができるので、それは素晴らしいことです。

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

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

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

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

  • 帯域幅が限られている場合
  • 操作がステートレスの場合:ある呼び出しから次の呼び出しまで情報は保持されず、各要求は独立して処理されます。
  • クライアントでキャッシュが必要な場合。

SOAPは、次の場合に進む方法です。

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

Q1)読むか、もっとグーグルで読むべきことがいくつかあります:

JavaのSOAPと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を参照することをお勧めします。素晴らしくて、読むのも難しくなく、大きすぎません(win win)。

13
ant

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-present()POST-acceptRepresention()PUT-storeRepresention()DELETE-removeRepresention()

SOAPベースの読み取りはキャッシュできません。 RESTベースの読み取りをキャッシュできます。パフォーマンスと拡張性が向上します。 SOAP WSはSSLセキュリティとWS-securityの両方をサポートします。これにより、必要なポイントまでセキュリティを維持し、ポイントツーポイントSSLだけでなく中間者を通じてIDを維持し、さまざまな部分を保護するなど、エンタープライズセキュリティ機能を追加しますRESTは、ポイントツーポイントSSLセキュリティのみをサポートします。 SSLは、すべてが機密であるかどうかにかかわらず、メッセージ全体を暗号化します。 SOAPは、短期トランザクションのACIDベースのトランザクション管理と、長期実行トランザクションの補償ベースのトランザクション管理の両方を包括的にサポートしています。また、分散リソース全体の2フェーズコミットもサポートします。 RESTはトランザクションをサポートしますが、ACID準拠ではなく、HTTPプロトコルによって制限されるため、分散トランザクションリソース全体で2フェーズコミットを提供することもできません。

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

sourcehttp://Java-success.blogspot.in/2012/02/Java-web-services-interview-questions.html

7
murali

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