2012-09-26 12 views
18

Witam Pracowałem z JAX-WS dla usług internetowych opartych na SOAP. Teraz chcę użyć usługi REST, ponieważ usługa REST ma przewagę nad protokołem SOAP, ponieważ badałem ją od wersji here.JAX-WS vs JAX-RS Dla usługi sieciowej RESTful

Ale z różnych artykułów wiedziałem, że możemy również tworzyć RESTful webservices od JAX-WS. Ale większość ludzi mówi, że powinniśmy używać JAX-RS zamiast JAX-WS.

Moje pytanie brzmi: czym różni się usługa internetowa JAX-WS RESTful od JAX-RS (koszulka). Jakie są zalety JAX-RS w porównaniu z JAX-WS? I dlaczego powinniśmy używać JAX-RS do RESTful webservices?

Dzięki z góry.

Odpowiedz

26

TL; DR

JAX-WS jest przeznaczona dla XML oparte usług internetowych, takich jak mydło. JAX-RS nie ma tego samego ograniczenia.

JAX-WS jest ogólnie ukierunkowany na interakcje serwer-serwer z dobrze zdefiniowanymi umowami (WSDL) i zwykle, gdy strona usługi i klienta są z oddzielnych grup. Jest to bardzo wymagające zasoby, więc nie jest możliwe wykonywanie interakcji między klientem a serwerem, w których zdolność sieci lub urządzenia klienckiego jest mniejsza niż optymalna.

JAX-RS jest nastawiony na interakcje między klientem a serwerem, mimo że serwer jest w porządku. Ponieważ ma niewielkie wymagania serwisowe, może być dostosowany do potrzeb klienta.

Więcej informacji

JAX-RS API zapewnia tylko podejść kodu pierwszego, natomiast JAX-WS umożliwia zarówno kod pierwszego (na ogół nie zaleca) i umowa pierwszego z wykorzystaniem plików WSDL (bardziej zalecane).

JAX-RS 2.0 wprowadza API klienta, które jest inteligentnym opakowaniem dla HttpUrlConnection, które ma dużo więcej możliwości mapowania, JAX-WS jest również opakowaniem, ale dane, które zajmuje w implementacjach referencyjnych, to tylko XML.

JAX-RS ma tę zaletę, że tworzy interfejsy API, które są prostsze w tworzeniu i analizowaniu komunikatów dla różnych przeglądarek i urządzeń mobilnych, a mianowicie dla struktury JSON. Nie wprowadza pojęcia koperty i używa do tego protokołu HTTP. Nie wprowadza kryptografii ani bezpieczeństwa, używa do tego protokołu HTTPS.

JAX-WS, chociaż działa w oparciu o protokół HTTPS do kryptografii, zapewnia dodatkowe zabezpieczenia za pomocą WS-SecurityPolicy itd. Ponadto kontrakty są ustalane z wykorzystaniem WSDL i mogą być weryfikowane poza aplikacją przy użyciu ESB, takich jak DataPower.

Więc co wybrać

JAX-WS jest generalnie nastawione na serwerze do interakcji serwera z dobrze zdefiniowanymi umów (WSDLs) i zazwyczaj, gdy usługa i po stronie klienta są z oddzielnymi grupami. Jest to bardzo wymagające zasoby, więc nie jest możliwe wykonywanie interakcji między klientem a serwerem, w których zdolność sieci lub urządzenia klienckiego jest mniejsza niż optymalna.

JAX-RS jest nastawiony na interakcje między klientem a serwerem, mimo że serwer jest w porządku. Jedynym zobowiązaniem umownym między klientem a serwerem jest komunikat i nagłówki żądań. Ponieważ ma niewielkie wymagania serwisowe, może być dostosowany do potrzeb klienta.

Jednak używanie API usług RESTful jest podobne do wykonywania meta-programowania jak Ruby i Python, co opóźnia problemy w czasie wykonywania, ponieważ nie ma zdefiniowanego schematu uzgodnionego i technicznie wymuszonego przez obie strony. W związku z tym nie polecam usług RESTful na całym świecie, ale poleciłbym go, gdybym miał kontrolę nad dwiema stronami, co zwykle dzieje się, gdy tworzysz aplikację internetową, która używa statycznego HTML/CSS/JS i rozmawia z serwerem RESTful dla dane.