Jaka jest różnica między JAX-RS a JAX-WS?

95

Po przeczytaniu kilku artykułów na temat JAX-RS i JAX-WS, miałem kilka pytań, które chcę potwierdzić?

  1. Czy JAX-RS może wykonywać żądania asynchroniczne, takie jak JAX-WS?
  2. Czy JAX-RS może uzyskać dostęp do usługi internetowej, która nie działa na platformie Java i odwrotnie?
  3. Co to znaczy, że „REST jest szczególnie przydatny w przypadku urządzeń o ograniczonym profilu, takich jak urządzenia PDA i telefony komórkowe”?
  4. Co to znaczy, że „JAX-RS nie wymaga komunikatów XML ani definicji usługi WSDL-API?
pmark019
źródło

Odpowiedzi:

78

Czy JAX-RS może wykonywać żądania asynchroniczne, takie jak JAX-WS?

1) Nie wiem, czy JAX-RS API zawiera określony mechanizm dla żądań asynchronicznych, ale ta odpowiedź może się zmienić w zależności od używanej implementacji klienta.

Czy JAX-RS może uzyskać dostęp do usługi internetowej, która nie działa na platformie Java i odwrotnie?

2) Nie mogę wymyślić żadnego powodu, dla którego nie byłoby to możliwe.

Co to znaczy, że „REST jest szczególnie przydatny w przypadku urządzeń o ograniczonym profilu, takich jak urządzenia PDA i telefony komórkowe”?

3) Architektury oparte na REST zazwyczaj wykorzystują lekki format danych, taki jak JSON, do przesyłania danych tam iz powrotem. W przeciwieństwie do JAX-WS, który używa XML. Nie widzę samego XML'a tak znacznie cięższego niż JSON (co niektórzy mogą twierdzić), ale w przypadku JAX-WS to, ile XML jest używane, sprawia, że ​​REST z JSON jest lżejszą opcją.

Co to znaczy, że „JAX-RS nie wymaga komunikatów XML ani definicji usługi WSDL-API?

4) Jak wspomniano w 3, architektury REST często używają formatu JSON do wysyłania i odbierania danych. JAX-WS używa XML. Nie chodzi o to, że JSON jest znacznie mniejszy niż sam XML. Przede wszystkim specyfikacja JAX-WS zawiera dużo narzutów w sposobie komunikacji.

Jeśli chodzi o definicje WSDL i API, REST będzie częściej używać struktury URI i poleceń HTTP do definiowania API, a nie typów komunikatów, jak to ma miejsce w JAX-WS. Oznacza to, że nie musisz publikować dokumentu WSDL, aby inni użytkownicy Twojej usługi wiedzieli, jak rozmawiać z Twoją usługą. W przypadku REST nadal będziesz musiał udostępniać innym użytkownikom dokumentację dotyczącą organizacji usługi REST oraz tego, jakie dane i polecenia HTTP należy wysłać.

Nick Roth
źródło
Dziękuję za tę bardzo pomocną odpowiedź. Czy są jakieś inne rzeczy, które odróżniałyby JAX-WS od JAX-RS, o których wiesz?
pmark019
92

Kolejna ważna kwestia

JAX-WS reprezentuje SOAP

JAX-RS reprezentuje REST

Jak wybrać implementację usług sieciowych JAX-RS i JAX-WS?

user2849471
źródło
29
W rzeczywistości JAX-WS reprezentuje usługi sieciowe oparte na protokole RESTful i SOAP. Można o tym pomyśleć, że JAX-RS specjalizuje się w RESTful, podczas gdy JAX-WS pozwala na większą elastyczność wyboru między jednym z nich, a jednocześnie jest (w niektórych przypadkach) bardziej skomplikowany w konfiguracji.
MattC,
Dziękuję za proste wyjaśnienie.
PeerNet
2
JAX-WS reprezentuje zarówno usługi sieciowe RESTful, jak i oparte na SOAP ” - to nieprawda, czy możesz podać jakieś odniesienie, aby potwierdzić swoje roszczenie, JAX-WS może przesyłać SOAP przez HTTP, a także XML przez HTTP, ale to sprawia, że ​​JAX-WS Spokojny. Bycie RESTful to zupełnie inna koncepcja.
hagrawal
44

JAX-WS - to Java API dla usług internetowych opartych na XML - standardowy sposób tworzenia usług sieciowych w notacji SOAP (Simple Object Access Protocol).

Wywołanie usług sieci Web odbywa się za pośrednictwem zdalnych wywołań procedur. Do wymiany informacji pomiędzy klientem a serwisem internetowym wykorzystywany jest protokół SOAP. Wymiana komunikatów między klientem a serwerem za pośrednictwem komunikatów SOAP opartych na XML .

Klienci usługi sieciowej JAX-WS potrzebują pliku WSDL w celu wygenerowania kodu wykonywalnego, którego klienci mogą użyć do wywołania usługi sieci Web.

JAX-RS - Java API dla RESTful Web Services. Usługi sieciowe RESTful są reprezentowane jako zasoby i można je zidentyfikować za pomocą jednolitych identyfikatorów zasobów ( URI ). Zdalne wywołanie procedury w tym przypadku jest reprezentowane jako żądanie HTTP, a niezbędne dane są przekazywane jako parametry zapytania. Usługi sieciowe RESTful - bardziej elastyczne, mogą używać kilku różnych typów MIME . Zwykle używany do wymiany danych XML lub wymiany danych JSON (JavaScript Object Notation) ...


źródło
Krótkie i zwięzłe wyjaśnienie !! Świetny.
Saurabh Rai
0

Pracowałem nad Apachi Axis1.1 i Axis2.0 i JAX-WS, ale sugerowałbym, że musisz JAX-WS, ponieważ pozwala na tworzenie wsdl w dowolnym formacie, wykonywałem operację jako GetInquiry () w Apache Axis2. pozwól mi rozpocząć nazwę operacji dużymi literami, więc uważam, że nie jest dobra, więc sugeruję, abyś użył JAX-WS

Waseem Saeed
źródło
0

Czy JAX-RS może wykonywać żądania asynchroniczne, takie jak JAX-WS?

Tak, z pewnością może używać @Async

Czy JAX-RS może uzyskać dostęp do usługi internetowej, która nie działa na platformie Java i odwrotnie?

Tak, może to zrobić

Co to znaczy, że „REST jest szczególnie przydatny w przypadku urządzeń o ograniczonym profilu, takich jak urządzenia PDA i telefony komórkowe”?

Jest używany głównie w publicznych interfejsach API, zależy to od podejścia, którego chcesz użyć.

Co to znaczy, że „JAX-RS nie wymaga komunikatów XML ani definicji usługi WSDL-API?

Ma swoje własne standardy WADL (Web application Development Language) ma żądanie http, dzięki któremu można uzyskać dostęp do zasobów, które są w sumie tworzone przez inny sposób myślenia, W przypadku, gdy w Jax-R trzeba pomyśleć o ujawnieniu zasobów

Urvil Joshi
źródło