it-swarm.com.de

Webdienst vs Webanwendung

Ich weiß, das ist eine alte Frage und muss schon hundert Mal beantwortet worden sein, aber ich kann noch keine befriedigende Antwort finden.

Ich erstelle eine Anwendung, die von anderen Anwendungen (Mobil/Web) zum Abrufen der Daten verwendet wird. Jetzt habe ich 2 Möglichkeiten:

  1. Erstellen Sie meine Anwendung als einfache Webanwendung.
  2. Erstellen Sie einen Webdienst.

Ein Web-Service sieht komplexer aus, wenn ein Client die Daten in einem angegebenen Format (SOAP/REST) ​​bereitstellt und meine App die Anforderung parst und die vom Client abgefragten Daten zurücksendet. Wie die Daten verwendet werden, ist nicht das Problem meiner App.

Meine Frage ist, dass dies auch durch eine einfache Web-App erreicht werden kann, die die Anfrage im XML-Format akzeptiert und mit einer XML-Antwort antwortet. Ein gutes Gefühl ist, dass ein Webservice ein besserer Weg für diese Art von Service ist, bei dem wir nicht sicher sind, wer ihn alle nutzen wird. Gibt es bestimmte Vorteile, wenn Sie einen Web-Service gegenüber einer einfachen Web-App verwenden?

40
Kamal

Auf einer niedrigen Ebene sind Webanwendungen und Webdienste irgendwie dasselbe. Beide arbeiten über http (s). SOAP ist nur eine klar definierte Version von XML. REST ist irgendwie nur HTTP. Wenn Sie möchten, können Sie eine Webanwendung wie Web-Services und umgekehrt aussehen lassen.

Der Hauptunterschied besteht in internen Entwicklungsoptionen, die auf der von Ihnen verwendeten Plattform basieren. Wenn Sie beispielsweise Visual Studio verwenden, erhalten Sie durch Hinzufügen einer WCF-Dienstanwendung ein Projekt, das standardmäßig auf WCF ausgerichtet ist. Die Auswahl eines anderen Anwendungstyps hindert Sie jedoch nicht daran, Web-Services hinzuzufügen.

Die Verwendung von SOAP ist aus den folgenden Gründen im Allgemeinen eine bessere Option als einfaches altes XML.

  • Ihre Benutzer erwarten es und wissen wahrscheinlich bereits, wie sie es lesen können.

  • Die Entwicklungsumgebungen Ihrer Benutzer werden wahrscheinlich alles über SOAP wissen und können sie sofort interpretieren. (Wenn Sie eine WSDL-Datei bereitstellen, können viele Benutzer ein Skript verwenden, um Ihre Klassen innerhalb von Sekunden zu generieren.)

  • Ihre Botschaften sind eher gut definiert. Ich arbeite gerade an einem Projekt, bei dem die andere Seite ihre eigene zufällige XML-Struktur definiert hat und es ein Albtraum ist, mit dem man arbeiten kann. Ich weiß nie wirklich, was zu erwarten ist, und es gibt wenig Konsistenz zwischen ihren verschiedenen Nachrichtentypen. Zumindest wenn sie sich einverstanden erklärt hätten, sich an SOAP zu halten, hätte ich es vielleicht viel einfacher gehabt, ihre Botschaften zu interpretieren.

16
Buh Buh

Wenn wir an die Terminologie denken, ist das meiner Meinung nach hier die Hauptfrage.

Web-Service bezieht sich auf Software, die Daten in jedem Format (XML/JSON usw.) über eine Art Webschnittstelle bereitstellt. Diese Schnittstelle kann als API (Application Programming Interface) bezeichnet werden. Mit REST und SOAP können Sie die API entwerfen.

Anwendung ist die Software, die diese vom Webdienst bereitgestellte API verwendet.

Mit anderen Worten ist der Webdienst "Server" und die Anwendung "Client". Normalerweise bedienen Server Server und Clients den Benutzer.

Auf jede Weise, die Sie zum Erstellen Ihres Systems wählen, würde ich den Teil, der die Daten bereitstellt, als "Web-Service" und den Teil, der die Daten verwendet, als "Anwendung" (oder "Webanwendung", falls vorhanden) bezeichnen. 

Klingt wie in Ihrem Fall, Sie bauen einen Web-Service auf, der XML-formatierte Daten für mehrere Anwendungen bereitstellt. Meine Antwort lautet also: Bauen Sie das, was Sie bereits bauen, und nennen Sie es web service .

39
Jeewes

Wenn Ihre Anwendung keine Benutzeroberfläche benötigt, machen Sie sie zu einem Webdienst. Wenn eine Benutzeroberfläche erforderlich ist, verwenden Sie eine Webanwendung.

16
John Saunders

Ich denke, das könnte Ihnen helfen, Ihre Verwirrung zu lösen

In der Branche gibt es zwei Hauptanwendungsfälle von WEB

  1. Business to Consumer (B2C): Wenn Verbraucher direkt mit dem Unternehmen interagieren, verwenden wir immer eine Webanwendung, um eine Kommunikation zwischen zwei Parteien bereitzustellen.
  2. Business to Business (B2B): Dies bedeutet, dass ein Teil des Geschäfts einige Input/Services eines anderen Teils des Geschäfts benötigt. Immer ein Web-Service wird verwendet, um die Business-to-Business-Anforderungen zu erfüllen .__ Normalerweise interagieren Konsumenten niemals direkt mit den Web-Services. Wir interagieren nur mit einer Webanwendung und einer Webanwendung mit einem Web-Service für Informationen/Daten oder Verarbeitung.

Entnommen aus http://coder2design.com/Java-interview-questions/

6
Jatinder Pal

Meine Frage ist, dass das Gleiche erreicht werden kann, wenn eine einfache Web-App akzeptiert die Anfrage im XML-Format und antwortet mit einer XML-Antwort.

Das ist ein Webservice. Ich denke, das ist eine Frage der Terminologie. Sie haben keine andere Möglichkeit, dieses Problem zu lösen, als einen Web-Service zu verwenden, ob Sie nun unruhig sind oder auf SOAP basieren, sondern ob Sie als Antwort auf XML-Anforderungen Daten im XML-Format an Clients übergeben ein Webservice.

Ich vermute, was Sie fragen wollen, ist, ob Sie einen RESTful-Webservice oder einen komplizierten SOAP -basierten Ansatz verwenden sollten. Für mich hängt die Antwort davon ab, wie viele Funktionen in Ihrem 'Service' benötigt werden. 

SEIFE

Wenn Ihr Dienst über viele Funktionen verfügt, als Benutzer von Java und/oder Visual Studio es vorziehen würden, Ihre WSDL-Datei zu importieren und Ihren Dienst als Objekt mit allen für sie durchgeführten XML-Analysen zu verwenden, wäre SOAP die Antwort .

SICH AUSRUHEN

Wenn Sie nur über wenige Funktionen mit sehr einfachen Eingabeparametern und Antwortdaten verfügen, ist SOAP möglicherweise zu viel.

MySite.com/Add/5/3

oder

MySite.com/GetStockSymbol/Facebook

oder

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

Ich habe diese Frage vor mehr als drei Jahren gestellt und seitdem ist viel Wasser unter die Brücke geflossen. Ich habe an Dutzenden von Webanwendungen gearbeitet und Hunderte von Webservices erstellt. Ich denke, es macht Sinn, hier meine eigene Frage zu beantworten. 

Die Herausforderung, der ich mich stellte, als ich diese Frage stellte, war, dass ich zwischen den Begriffen "Anwendung" und "Dienst" verwirrt wurde (beachten Sie, dass das Web ein gemeinsames Element in der Webanwendung und im Webdienst ist). Wie der Name vermuten lässt, handelt es sich bei Anwendung um eine Anwendung an sich, während ein Dienst anderen dienen soll. Ein Dienst hat wahrscheinlich keine Bedeutung, es sei denn, jemand benutzt ihn. Es kann eine oder mehrere Anwendungen oder Dienste bedienen.

Nun, wenn ich mir meine Frage anschaue 

Ich erstelle eine Anwendung, die von anderen Anwendungen verwendet wird (mobil/web), um die Daten abzurufen. Jetzt habe ich 2 Möglichkeiten, 1. meine .__ zu erstellen. Anwendung als einfache Webanwendung 2. Erstellen eines Webdienstes.

Ich möchte mir sagen, dass "Dude! Wenn es eine Entität gibt, die eine Anfrage annimmt und Daten zurückgibt, sprechen Sie von einem Dienst." Weil ich mir keine Sorgen mache, was mit diesen Daten passieren wird? Wer wird es benutzen? Wie wird das angezeigt? 

Ich nehme eine Anfrage und schicke Daten zurück. Nun, wie mache ich das? Ist Teil der Implementierung. Ich könnte SOAP oder REST verwenden. Ich kann Jersey oder Spring MVC/REST verwenden oder ein einfaches Servlet sein, das eine Anforderung entgegennimmt und Daten in JSON oder XML oder String oder in einem anderen erforderlichen Format zurückgibt. 

4
Kamal

From RESTful Web Services von Leonard Richardson und Sam Ruby, ISBN: 978-0-596-52926-0:

Web-Services sind Web-Anwendungen zwar sehr ähnlich, doch die Ressourcenerstellung ist einer der Orte, an denen sie sich unterscheiden. Der Hauptunterschied besteht darin, dass HTML-Formulare derzeit nur GET und POST unterstützen. Dies bedeutet, dass Webanwendungen überlastete POST verwenden müssen, um unsichere Operationen zu übermitteln.

1
Sergiu Starciuc

Webdienste haben nicht immer eine Benutzeroberfläche. Sie sind normalerweise APIs, die JSON verwenden, sie können auch SOA mit SOAP und hauptsächlich XML sein. Sie können auch Sockets, Server und andere Micro-Webdienste usw. sein. 

Webanwendungen können auf viele Arten zusammengestellt werden. Es gibt mehrere Möglichkeiten, Ihre Anwendung durch Orchestrierung mehrerer Web-Services zu erstellen, und eine separate GUI zur Steuerung dieser Anwendungen, die an diese Services gebunden ist. Die andere Methode, bei der keine Dienste verwendet werden, besteht darin, Code prozedural in Ihre Benutzeroberflächen-App einzubetten, oder noch besser, eine objektorientierte Anwendung zu erstellen, die später ihre eigenen Dienste im Modell getrennt hat, auf die der Controller zugreifen kann, und eine eigene Ansicht hat eine GUI, die auf die Dienste im Backend zugreift, oder sogar kompliziertere Apps, die A2B-, B2B- und B2C-Dienste von einer GUI durchlaufen. 

Services verfügen nicht immer über eine grafische Benutzeroberfläche, sie können eine CRUD zur Verwaltung der Daten haben. Sobald Sie jedoch diese Art von Funktionen erhalten haben, wird sie zu einer eigenständigen Anwendung. Die Dienste werden auf etwas Größeres als auf sich selbst angewendet. Diese Anwendung erstellt Ihre Anwendung. Es muss einen Zweck haben. Normalerweise dauert es mehr als einen blinden Dienst, um Ihre Bewerbung abzuschließen, und es gibt eine Art Schnittstelle. 

Wenn Sie einfach blind eine URI-Anfrage an Ihren Dienst senden und Json blind zurückschickt, ist dies ein Dienst. Was sendet das blind? Wenn Sie dann keine Bewerbung. Wenn es sich um eine Art "Crud" handelt, dann wird daraus eine Anwendung. Das Crud ist eine GUI für den Zugriff auf die Dienste und insgesamt ein Datenverwaltungs-Anwendungssystem. Wenn Sie nun eine Ebene auf die Vorderseite setzen, um diese Daten auf Website-Art zu demonstrieren, haben Sie jetzt ein Produkt zum Anzeigen dieser Daten, ein Produkt zum Verwalten und die Daten, bei denen es sich um das eigentliche Produkt handelt und auf das über den Webservice zugegriffen werden kann , es ist jetzt eine vollständige Anwendung. Ihr Bemühen, dies zu erstellen, wird zu Ihrer Anwendung. 

0
blamb

Ich denke, die Webanwendung gegenüber dem Webdienst ist die Tatsache, dass der Bereitstellungsfaktor variiert, was bedeutet, dass der Einsatz einer Webanwendung (lokal) auf den Wert eines Webdienstes (global) begrenzt ist Denken Sie an die UI-Perspektive. Eine bessere Option ist die Webanwendung. Wenn Sie jedoch an die Programmier- und Datentransferperspektive denken, wenden Sie sich hauptsächlich an einen Web-Service. Web-Anwendung erfordert die Verwendung von Servlets mit Frameworks wie Spring MVC usw. Auf der anderen Seite, wenn Sie Wenn Sie dieselbe Anwendung auf mehreren Plattformen bereitstellen möchten, machen Sie sie über Rest/Soap-Implementierungen zu einem Webdienst, sodass das Verhalten der Webanwendungen eher zu einem Dienst wird.

Zusamenfassend,

   WebService   =

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

Ich weiß, es ist zu spät für eine Wiederholung, aber ich möchte es trotzdem

Web Services-Ansatz ist gut, wenn 

ein. Unternehmensintegration nur mit Webservices, z. B. die Integration verteilter Module/Anwendungen. 

b. geeignet für verteilte anwendungen

c. mehr als ein Verbraucher für denselben Dienst - wie Banken, die Daten von der Credit Reporting Agency konsumieren

d. Verbraucher möchten Daten in verschiedenen Formaten - Wie ein Verbraucher (Kunde) im XML-Format möchte, wäre der andere in JASON .. etc

0
Santh