2012-05-11 14 views
89

Recentemente, ho deciso di iniziare a conoscere i servizi web java e quando ho iniziato a cercare un tutorial per i servizi web java in google, ho scoperto che ci sono molti tipi di servizi Web basati su XML, basati su SOAP e RESTful.Ho bisogno di imparare i servizi Web in Java. Quali sono i diversi tipi in esso?

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

Q1) Mi sono confuso, sarebbe bello se qualcuno mi può aiutare a capire la differenza tra questi diversi tipi di servizi web, in modo che io possa decidere quale imparare prima.

Q2) Inoltre, desidero approfondire la creazione di diversi tipi di servizi Web in java. C'è qualche tutorial o risorse che può dare un'idea di ogni tipo di servizio web e un confronto tra di loro.

Q3) in base a quali scenari e condizioni dovrei decidere che voglio creare un servizio web basato su XML piuttosto che un servizio SOAP o dovrei andare con il servizio RESTful.

+0

[Il Tutorial Java EE 6] (http://docs.oracle.com/javaee/6/tutorial/doc/) –

+1

Buone question.thanks – Krishna

risposta

138
  1. SOAP Web Services sono basato su standard e supportato da quasi tutti i piattaforma software: si affidano soprattutto in XML e il supporto per le transazioni, la sicurezza, i messaggi asincroni e molte altre questioni. È uno standard abbastanza grande e complicato, ma copre quasi ogni situazione di messaggistica. Dall'altra parte, RESTful services si basa sul protocollo HTTP e sui verbi (GET, POST, PUT, DELETE) per scambiare messaggi in qualsiasi formato, preferibilmente JSON e XML. È un approccio architettonico piuttosto semplice ed elegante.
  2. Come in ogni argomento nel mondo Java, ci sono diverse librerie per costruire/consumare servizi Web. Nel lato SOAP si dispone di JAX-WS standard e Apache Axis e in REST è possibile utilizzare Restlets o Spring REST Facilities tra le altre librerie.

Con domanda 3, this article precisa che i servizi RESTful sono appropriata in questo scenario:

  • Se si hanno limitato la larghezza di banda
  • Se le operazioni sono stateless: Nessuna informazione viene conservata da un'invocazione alla il prossimo, e ogni richiesta viene trattata in modo indipendente.
  • Se i client richiedono la memorizzazione nella cache.

Mentre SOAP è la strada da percorrere quando:

  • Se si richiede l'elaborazione asincrona
  • Se avete bisogno di formale contratto/Interfacce
  • Nelle vostre operazioni di servizio sono stateful: Ad esempio, è memorizzare informazioni/dati su una richiesta e utilizzare i dati memorizzati sul successivo.
+11

+1 per essere così chiaro e affermando gli scenari :) –

+0

Risposta chiara e nitida. – Krishna

+0

+1 per una buona risposta ... !!! –

13

Q1) Qui ci sono cose di coppia da leggere o Google più:

Main differences between SOAP and RESTful web services in java http://www.ajaxonomy.com/2008/xml/web-services-part-1-soap-vs-rest

tocca a voi quello che vuoi imparare prima. Ti consiglio di dare un'occhiata al framework CXF. Puoi costruire entrambi i servizi di riposo/sapone.

Q2) Ecco paio di buoni tutorial per sapone (avevo li segnalibro):

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

modo migliore per imparare non è solo la lettura esercitazioni. Ma prima dovresti andare attraverso i tutorial per avere un'idea di base in modo che tu possa vedere che sei in grado di produrre qualcosa (o meno) e che ti motiverà.

SO è un ottimo modo per imparare una particolare tecnologia (o più), la gente fa molte domande strane e ci sono sempre delle risposte più strane. Ma nel complesso imparerai come risolvere i problemi in altro modo. Forse non lo sapevi, forse non ci pensavi da solo.

Iscriviti a un paio di tag che sono interessanti per te ed essere persistente, fai buone domande e prova a dare buone risposte e ti garantisco che imparerai questo come il tempo passa (se sei persistente).

Q3) Dovrete rispondere a questo da soli. Prima decidendo cosa costruirai, dopotutto avrai bisogno di pensare a qualche mini progetto o qualcosa del genere e prenderlo da lì.

Se si decide di utilizzare CXF come framework per la creazione di entrambi i servizi REST/SOAP, consiglierei di consultare questo libro Apache CXF Web Service Development. È fantastico, non difficile da leggere e neanche troppo grande (vinci la vittoria).

+1

+1 per il libro :) – Saju

7

SOAP WS supporta sia la procedura remota (ad esempio RPC) che gli stili di integrazione middle-ware (MOM) orientati ai messaggi. Il Restful Web Service supporta solo lo stile di integrazione RPC.

SOAP WS è il protocollo di trasporto neutro. Supporta più protocolli come HTTP (S), Messaging, TCP, UDP SMTP, ecc. Il REST è specifico del protocollo di trasporto. Supporta solo i protocolli HTTP o HTTPS.

SOAP WS consente solo il formato dei dati XML. Si definiscono le operazioni, quali tunnel attraverso il POST. L'attenzione è rivolta all'accesso alle operazioni denominate e all'esposizione della logica dell'applicazione come servizio. REST consente più formati di dati come XML, dati JSON, testo, HTML, ecc. Qualsiasi browser può essere utilizzato poiché l'approccio REST utilizza le operazioni Web GET, PUT, POST e DELETE standard. L'attenzione è rivolta all'accesso alle risorse nominate e all'esposizione dei dati come servizio. REST ha il supporto AJAX. Può utilizzare l'oggetto XMLHttpRequest. Buono per le operazioni CRUD stateless (Crea, leggi, aggiorna e cancella). GET - rappresentano() POST - acceptRepresention() PUT - storeRepresention() DELETE - removeRepresention()

SOAP basato legge non possono essere memorizzate nella cache. Le letture basate sul REST possono essere memorizzate nella cache. Esegue e scala meglio. SOAP WS supporta sia la sicurezza SSL che la sicurezza WS, che aggiunge alcune funzionalità di sicurezza aziendale come il mantenimento della sicurezza fino al punto in cui è necessario, mantenendo le identità attraverso intermediari e non solo punto a punto solo SSL, proteggendo diverse parti del messaggio con diversi algoritmi di sicurezza, ecc. Il REST supporta solo la sicurezza SSL point-to-point.Il protocollo SSL codifica l'intero messaggio, indipendentemente dal fatto che sia sensibile o meno. Il SOAP ha un supporto completo per la gestione delle transazioni basata su ACID per transazioni di breve durata e gestione delle transazioni basata sulla compensazione per transazioni di lunga durata. Supporta inoltre il commit a due fasi tra le risorse distribuite. Il REST supporta le transazioni, ma non è né compatibile con ACID né può fornire il commit a due fasi tra le risorse transazionali distribuite in quanto è limitato dal suo protocollo HTTP.

Il SOAP ha successo o riprova la logica integrata e fornisce l'affidabilità end-to-end anche attraverso gli intermediari SOAP. REST non ha un sistema di messaggistica standard e si aspetta che i client che invocano il servizio risolvano i problemi di comunicazione riprovando.

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

+0

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

0

Se l'applicazione spesso utilizza il protocollo http poi riposare è meglio a causa del suo peso leggero, e sapendo che l'applicazione utilizza solo il protocollo http scelta di SOAP non è così buono, perché pesante, meglio prendere decisioni sulla selezione dei servizi Web in base ai protocolli che utilizziamo nelle nostre applicazioni.

Problemi correlati