Ho bisogno di imparare i servizi Web in Java. Quali sono i diversi tipi in esso? [chiuso]


91

Recentemente, ho deciso di iniziare a conoscere i servizi web java e quando ho iniziato a cercare un tutorial per servizi web java in google, ho scoperto che ci sono molti tipi di servizi web basati su XML, basati su SOAP, anche RESTful.

Inoltre, ho scoperto che esiste una specifica JAX-WS per servizi Web basati su xml e una specifica JAX-RS per la creazione di servizi Web RESTful.

D1) Mi sono confuso, sarebbe fantastico se qualcuno mi aiutasse a capire la differenza tra questi diversi tipi di servizi web, in modo che io possa decidere quale imparare per primo.

Q2) Inoltre, voglio imparare a fondo sulla creazione di diversi tipi di servizi web in java. Esistono tutorial o risorse che possono fornire una panoramica di ogni tipo di servizio web e un confronto tra di loro.

Q3) in base a quali scenari e condizioni dovrei decidere di voler creare un servizio web basato su XML piuttosto che un servizio SOAP o dovrei optare per il servizio RESTful.


Risposte:


142
  1. I servizi Web SOAP sono basati su standard e supportati da quasi tutte le piattaforme software: fanno molto affidamento su XML e supportano transazioni, sicurezza, messaggi asincroni e molti altri problemi. È uno standard piuttosto ampio e complicato, ma copre quasi tutte le situazioni di messaggistica. Dall'altro lato, i servizi RESTful si basano sul protocollo HTTP e sui verbi (GET, POST, PUT, DELETE) per scambiare messaggi in qualsiasi formato, preferibile JSON e XML. È un approccio architettonico piuttosto semplice ed elegante.
  2. Come in ogni argomento nel mondo Java, ci sono diverse librerie per creare / utilizzare i servizi Web. In SOAP Side hai lo standard JAX-WS e Apache Axis , e in REST puoi usare Restlet o Spring REST Facilities tra le altre librerie.

Con la domanda 3, questo articolo afferma che i servizi RESTful sono appropriati in questi scenari:

  • Se hai una larghezza di banda limitata
  • Se le operazioni sono senza stato: nessuna informazione viene conservata da una chiamata a quella successiva e ogni richiesta viene trattata in modo indipendente.
  • Se i tuoi clienti richiedono il caching.

Mentre SOAP è la strada da percorrere quando:

  • Se è necessaria un'elaborazione asincrona
  • Se hai bisogno di un contratto formale / interfacce
  • Nel tuo servizio le operazioni sono stateful: ad esempio, archivi informazioni / dati su una richiesta e utilizzi i dati memorizzati su quella successiva.

11
+1 per essere così chiari e affermare gli scenari :)
Rajesh Pantula

Risposta chiara e nitida.
Krishna

+1 per una buona risposta ... !!!
Shailesh Saxena

Buona risposta, puoi dirmi cosa sono le operazioni stateless / stateful?
Keerthivasan

Ho modificato la risposta includendo quei concetti.
Carlos Gavidia-Calderon

13

Q1) Qui ci sono un paio di cose da leggere o più su google:

Principali differenze tra i servizi web SOAP e RESTful in java http://www.ajaxonomy.com/2008/xml/web-services-part-1-soap-vs-rest

Sta a te cosa vuoi imparare prima. Ti consiglio di dare un'occhiata al CXF framework . Puoi costruire entrambi i servizi di riposo / sapone.

Q2) Ecco un paio di buoni tutorial per soap (li avevo aggiunti ai segnalibri):

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

Il modo migliore per imparare non è solo leggere i tutorial. Ma prima dovresti passare attraverso i tutorial per avere un'idea di base in modo da poter vedere che sei in grado di produrre qualcosa (o meno) e questo ti motiverebbe.

COSÌ è un ottimo modo per imparare una tecnologia particolare (o più), le persone fanno molte domande strane e ci sono risposte sempre più strane. Ma nel complesso imparerai come risolvere i problemi in un altro modo. Forse non lo sapevi in ​​quel modo, forse non potevi pensarci da solo.

Iscriviti a un paio di tag che ti interessano e sii persistente, fai buone domande e cerca di dare buone risposte e ti garantisco che imparerai questo con il passare del tempo (se sei persistente).

Q3) Dovrai rispondere tu stesso a questo. Prima decidendo cosa costruire, dopotutto dovrai pensare a qualche mini progetto o qualcosa del genere e prenderlo da lì.

Se decidi di utilizzare CXF come framework per creare servizi REST / SOAP, ti consiglio di consultare questo libro Apache CXF Web Service Development. È fantastico, non è difficile da leggere e nemmeno troppo grande (win win).


7

SOAP WS supporta sia gli stili di integrazione delle chiamate di procedura remota (cioè RPC) che del middleware orientato ai messaggi (MOM). Restful Web Service supporta solo lo stile di integrazione RPC.

SOAP WS è neutrale rispetto al protocollo di trasporto. Supporta più protocolli come HTTP (S), Messaggistica, TCP, UDP SMTP, ecc. REST è specifico del protocollo di trasporto. Supporta solo i protocolli HTTP o HTTPS.

SOAP WS consente solo il formato dati XML. Si definiscono le operazioni, che passano attraverso il POST. L'attenzione si concentra sull'accesso alle operazioni denominate e sull'esposizione della logica dell'applicazione come servizio. REST consente più formati di dati come XML, dati JSON, testo, HTML, ecc. È possibile utilizzare qualsiasi browser poiché l'approccio REST utilizza le operazioni Web standard GET, PUT, POST e DELETE. L'obiettivo è l'accesso alle risorse denominate e l'esposizione dei dati come servizio. REST ha il supporto AJAX. Può utilizzare l'oggetto XMLHttpRequest. Ideale per operazioni CRUD (Crea, Lettura, Aggiorna ed Elimina) senza stato. GET - rappresenta () POST - acceptRepresention () PUT - storeRepresention () DELETE - removeRepresention ()

Le letture basate su SOAP non possono essere memorizzate nella cache. Le letture basate su REST possono essere memorizzate nella cache. Funziona e scala meglio. SOAP WS supporta sia la sicurezza SSL che WS-security, che aggiunge alcune funzionalità di sicurezza aziendale come mantenere la sicurezza fino al punto in cui è necessario, mantenere le identità tramite intermediari e non solo punto a punto solo SSL, proteggendo parti diverse del messaggio con diversi algoritmi di sicurezza, ecc. REST supporta solo la sicurezza SSL point-to-point. SSL crittografa l'intero messaggio, sia che sia sensibile o meno. SOAP offre un supporto completo sia per la gestione delle transazioni basata su ACID per transazioni di breve durata che per la gestione delle transazioni basate sulla compensazione per transazioni di lunga durata. Supporta anche il commit in due fasi tra le risorse distribuite. Il REST supporta le transazioni,

SOAP ha una logica di successo o ripetizione incorporata e fornisce affidabilità end-to-end anche tramite intermediari SOAP. REST non dispone di un sistema di messaggistica standard e si aspetta che i client che invocano il servizio gestiscano gli errori di comunicazione riprovando.

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


> Restful Web Service supporta solo lo stile di integrazione RPC. REST non è RPC, dice RPC, "definisci alcuni metodi che fanno qualcosa" mentre REST dice, "definisci alcune risorse e avranno questi metodi". peej.co.uk/articles/rest.html
urmalp

0

Se la tua applicazione utilizza spesso il protocollo http, REST è il migliore per la sua leggerezza e sapere che la tua applicazione utilizza solo il protocollo http scegliere SOAP non è così buono perché è pesante, meglio prendere una decisione sulla selezione del servizio web in base ai protocolli che utilizziamo nelle nostre applicazioni.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.