web-dev-qa-db-ja.com

WebサービスとWebアプリケーション

これは古い質問であり、すでに何百回も回答されているはずですが、まだ満足のいく回答を見つけることができません。

他のアプリケーション(モバイル/ウェブ)がデータを取得するために使用するアプリケーションを作成しています。今、私は2つのオプションがあります:

  1. アプリケーションを単純なWebアプリケーションとして作成します。
  2. Webサービスを作成します。

任意のクライアントが指定された形式(SOAP/REST)でデータを提供し、私のアプリがリクエストを解析し、クライアントが要求したデータを返すWebサービスはより洗練されたように見えます。データの使用方法はアプリの問題ではありません。

私の質問は、XML形式の要求を受け入れ、XML応答で応答する単純なWebアプリでも同じことが実現できるということです。直感的には、誰がそれを使用するのかわからない場合、この種のサービスを利用するには、Webサービスの方が良い方法になるということです。しかし、単純なWebアプリよりもWebサービスを使用する特定の利点はありますか?

41
Kamal

低レベルのWebアプリケーションとWebサービスは、まったく同じものです。どちらもhttp(s)を介して動作します。 SOAPはXMLの適切に定義されたバージョンです。RESTはちょっとしたHTTPです。必要に応じて、WebアプリケーションをWebサービスのように見せることができます。その逆。

主な違いは、使用しているプラ​​ットフォームに基づいた内部開発オプションです。たとえば、Visual Studioを使用している場合、WCFサービスアプリケーションを追加すると、デフォルトでWCF向けのプロジェクトが作成されます。ただし、他の種類のアプリケーションを選択しても、Webサービスを追加できます。

これらの理由から、SOAP=を使用することは、通常の単純なxmlよりも優れたオプションです。

  • ユーザーはそれを期待しており、すでにその読み方を知っているでしょう。

  • ユーザーの開発環境は、おそらくSOAPについてすべてを知っており、そのまま使用できます。WSDLファイルを指定すると、多くのユーザーがスクリプトを使用して生成できます数秒であなたのクラス。)

  • メッセージは明確に定義されている可能性が高くなります。私は、反対側が独自のランダムなXML構造を定義した時点でプロジェクトに取り組んでおり、作業するのは悪夢です。期待することは本当にわからない。メッセージの種類によって一貫性はほとんどない。少なくともSOAPに準拠することに同意していた場合、メッセージを解釈するのがずっと楽になったかもしれません。

17
Buh Buh

用語を考えれば、それがここでの主な質問だと思います。

Webサービスとは、何らかの種類のWebインターフェイスを介して任意の形式(XML/JSONなど)でデータを提供するソフトウェアを指します。このインターフェイスは、API(アプリケーションプログラミングインターフェイス)と呼ばれます。 RESTおよびSOAPはAPIを設計する方法です。

アプリケーションは、Webサービスによって提供されるこのAPIを使用しているソフトウェアです。

つまり、Webサービスは「サーバー」であり、アプリケーションは「クライアント」です。通常、サーバーはマシンにサービスを提供し、クライアントはユーザーにサービスを提供します。

したがって、システムの構築を選択する場合は、データを提供する部分を「Webサービス」、データを利用する部分を「アプリケーション」(または「Webアプリケーション」)として呼び出します。

あなたの場合、複数のアプリケーションにXML形式のデータを提供するWebサービスを構築しているように聞こえます。だから私の答えは次のとおりです。すでに構築しているものを構築し、それを呼び出しますweb service

39
Jeewes

アプリケーションにユーザーインターフェイスが必要ない場合は、Webサービスにします。ユーザーインターフェイスが必要な場合は、Webアプリケーションを使用します。

17
John Saunders

これは混乱を解決するのに役立つと思います

業界にはWEBの2つの主なユースケースがあります

  1. 消費者へのビジネス(B2C):ニーズのためにビジネスと直接やり取りする消費者がいるときはいつでも、常にWebアプリケーションを使用して2者間の通信を提供します。
  2. 企業間(B2B):ビジネスの一部が、ビジネスの別の部分からの入力/サービスを必要としていることを意味します。常にWebサービスを使用して、企業間要件を満たします。通常、消費者がWebサービスと直接やり取りすることはありません。Webアプリケーションとやり取りするだけで、Webアプリケーションは情報/データまたは処理のためにWebサービスとやり取りします。

http://coder2design.com/Java-interview-questions/ から取得

6
Jatinder Pal

私の質問は、XML形式の要求を受け入れ、XML応答で応答する単純なWebアプリでも同じことが実現できるということです。

それはWebサービスです。これは用語の問題だと思います。 Webサービスを使用する以外にこれを解決する方法はありません。Webサービスが安静であるか、SOAPベースかはあなた次第ですが、XML形式でクライアントにデータを渡す場合は、 XML要求、つまりWebサービス。

あなたが尋ねたいのは、RESTful Webサービスを使用するか、複雑なSOAPベースのアプローチを使用するかどうかです。私にとって答えは、「サービス」に必要な機能の数に依存。

[〜#〜] soap [〜#〜]

サービスにJavaおよび/またはVisual StudioがWSDLファイルをインポートし、すべてのXML解析が行われたオブジェクトとしてサービスを使用することを好むユーザーよりも多くの機能がある場合、 SOAPが答えでしょう。

[〜#〜] rest [〜#〜]

非常に基本的な入力パラメーターと応答データを使用する関数が数個しかない場合は、SOAPでやり過ぎかもしれません。

MySite.com/Add/5/3

または

MySite.com/GetStockSymbol/Facebook

または

MySite.com/GetWeather/Paris/France
6
Usman Mutawakil

3年以上前にこの質問をしました。それ以来、橋の下にたくさんの水が流れていました。私は何十ものWebアプリケーションに取り組み、何百ものWebサービスを作成しました。したがって、ここで自分の質問に答えることは理にかなっていると思います。

この質問をしたときに直面した課題は、アプリケーションとサービスという用語が混同されることでした(WebはWebアプリケーションとWebサービスの共通要素です)。名前が示すように、アプリケーションはそれ自体がアプリケーションですが、サービスは他の人にサービスを提供するためのものです。誰かが使用しない限り、サービスにはおそらく意味がありません。 1つ以上のアプリケーションまたはサービスを提供できます。

質問を見ると

他のアプリケーション(モバイル/ウェブ)がデータを取得するために使用するアプリケーションを作成しています。これで2つのオプションがあります。1。アプリケーションを単純なWebアプリケーションとして作成する2. Webサービスを作成する。

「おい!リクエストを受け取ってデータを返すエンティティがあれば、あなたはサービスについて話している」と自分自身に伝えたいと思います。私はそのデータで何が起こるか心配していないので?誰が使用しますか?それはどのように表示されますか?

リクエストを受け取ってデータを返しています。今、私はそれをどうやってやっているのですか? SOAPまたはREST。JerseyまたはSpring MVC/RESTまたはJSON XMLまたは文字列、またはその他の必要な形式。

5
Kamal

RESTful Web Services by Leonard Richardson and Sam Ruby、ISBN:978-0-596-52926-0:

Webサービスは確かにWebアプリケーションに非常に似ていますが、リソースの作成はそれらが異なる場所の1つです。ここでの主な違いは、HTMLフォームが現在GETとPOSTのみをサポートしていることです。これは、Webアプリケーションが安全でない操作を伝えるためにオーバーロードPOSTを使用する必要があることを意味します。

2
Sergiu Starciuc

Webサービスには常にUIがあるわけではありません。これらは通常、JSONを使用するAPIであり、主にSOAおよびXMLを使用するSOAPタイプでもあり、ソケット、サーバー、その他のマイクロWebサービスなどでもあります。

Webアプリケーションは、さまざまな方法で組み合わせることができます。複数のWebサービスのオーケストレーションによってアプリケーションを作成するにはいくつかの方法があり、これらのサービスに結び付けられているものを制御するための個別のGUIがあります。サービスを使用しないもう1つの方法は、UIインターフェイスアプリに手順的にコードを埋め込むか、さらに良いことに、後でモデルが分離した独自のサービスを持ち、コントローラーがアクセスし、独自のビューを持つオブジェクト指向アプリケーションを作成することですバックエンドのサービスにアクセスするGUI、またはいくつかのGUIからA2B、B2B、B2Cサービスを渡すさらに複雑なアプリ。

サービスには常にGUIがあるわけではありません。データを維持するためにCRUDを使用できますが、これらのタイプの機能を使用し始めると、それ自体がアプリケーションになります。サービスは、それ自体よりも大きなものに適用されます。この適用により、アプリケーションが作成されます。それには目的が必要です。通常、アプリケーションを完了するには複数のブラインドサービスが必要であり、何らかのインターフェイスがあります。

盲目的にuriリクエストをサービスに送信し、それが盲目的にjsonを返送する場合、それはサービスです。盲目的にこれを送信するのは何ですか?場合は、アプリケーションではありません。ある種のクラッドがアプリケーションになると、クラッドはサービスにアクセスするためのGUIになり、全体としてデータ管理アプリケーションシステムになります。これで、このデータをWebサイト形式でデモンストレーションするためにレイヤーを前面に配置すると、このデータを表示する製品、それを管理する製品、および実際の製品であり、Webサービスを介してアクセス可能なデータが得られます、今では完全なアプリケーションです。これを作成するあなたの努力があなたのアプリケーションになります。

1
blamb

WebアプリケーションとWebサービスの違いは、展開係数の比率が異なるということです。つまり、Webアプリケーションの展開は(ローカル)Webサービスの場合(グローバル)に制限されます。さらに、UIパースペクティブを考える場合、より優れたオプションはWebアプリケーションですが、プログラミングとデータ転送のパースペクティブを考えるときは、主にWebサービスを使用します。 Webアプリケーションでは、Spring mvcなどのフレームワークでサーブレットを使用する必要があります。一方、同じアプリケーションを複数のプラットフォームにデプロイする場合、Rest/Soap実装を介してWebサービスにし、Webアプリケーションの動作をサービス。

要するに、

   WebService   =

                 (RestApi/Soap)    # added 
             /         |         \
(client1)---(Web Application)---(clientN)
0
Himanshu Ahuja

再生するには遅すぎることはわかっていますが、それでも

Webサービスのアプローチは、次の場合に適しています

a。分散モジュール/アプリケーションの統合など、Webサービスのみとのエンタープライズ統合。

b。分散アプリケーションに適しています

c。同じサービスの複数の消費者-Credit Reporting Agencyからデータを消費する銀行のように

d。消費者はさまざまな形式のデータを望んでいます-1人の消費者(顧客)がXML形式で望んでいるように、他の消費者はJASONなどです。

0
Santh