Muszę się nauczyć usług internetowych w Javie. Jakie są w nim różne typy? [Zamknięte]

91

Niedawno postanowiłem zacząć uczyć się o usługach sieciowych java i kiedy zacząłem szukać poradnika na temat usług sieciowych java w google, dowiedziałem się, że istnieje wiele typów usług sieciowych opartych na XML, opartych na SOAP, a także usługach RESTful.

Odkryłem również, że istnieje specyfikacja JAX-WS dla usług internetowych opartych na XML oraz specyfikacja JAX-RS do tworzenia usług sieciowych REST.

P1) Byłem zdezorientowany, byłoby wspaniale, gdyby ktoś mógł mi pomóc zrozumieć różnicę między tymi różnymi typami usług sieciowych, abym mógł zdecydować, której z nich się najpierw nauczyć.

Q2) Chciałbym również dowiedzieć się więcej o tworzeniu różnych typów usług internetowych w Javie. Czy istnieje samouczek lub zasoby, które mogą dać wgląd w każdy rodzaj usług sieciowych i porównanie między nimi?

Q3) w oparciu o scenariusze i warunki, w których powinienem zdecydować, że chcę utworzyć usługę internetową opartą na XML, a nie usługę SOAP, lub powinienem skorzystać z usługi RESTful.

Rajesh Pantula
źródło
Samouczek Java EE 6
Paul Vargas

Odpowiedzi:

142
  1. SOAP Web Services są oparte na standardach i obsługiwane przez prawie każdą platformę oprogramowania: opierają się w dużej mierze na języku XML i obsługują transakcje, bezpieczeństwo, komunikaty asynchroniczne i wiele innych problemów. To dość duży i skomplikowany standard, ale obejmuje prawie każdą sytuację związaną z przesyłaniem wiadomości. Z drugiej strony, usługi RESTful opierają się na protokole HTTP i czasownikach (GET, POST, PUT, DELETE) do wymiany wiadomości w dowolnym formacie, najlepiej JSON i XML. To dość proste i eleganckie podejście architektoniczne.
  2. Jak w każdym temacie w świecie Java, istnieje kilka bibliotek do tworzenia / używania usług internetowych. Po stronie SOAP masz standard JAX-WS i Apache Axis , aw REST możesz korzystać między innymi z Restlets lub Spring REST Facilities .

W przypadku pytania 3 w tym artykule stwierdzono, że usługi RESTful są odpowiednie w następujących scenariuszach:

  • Jeśli masz ograniczoną przepustowość
  • Jeśli twoje operacje są bezstanowe: Żadne informacje nie są zachowywane od jednego wywołania do następnego, a każde żądanie jest traktowane niezależnie.
  • Jeśli Twoi klienci wymagają buforowania.

Chociaż SOAP jest najlepszym rozwiązaniem, gdy:

  • Jeśli potrzebujesz przetwarzania asynchronicznego
  • Jeśli potrzebujesz formalnej umowy / interfejsów
  • W twoich operacjach serwisowych są stanowe: na przykład przechowujesz informacje / dane na żądanie i używasz tych przechowywanych danych w następnym.
Carlos Gavidia-Calderon
źródło
11
+1 za tak klarowne przedstawianie scenariuszy :)
Rajesh Pantula
Ostra i jasna odpowiedź.
Krishna
+1 za dobrą odpowiedź ... !!!
Shailesh Saxena
Dobra odpowiedź, czy możesz mi powiedzieć, czym są operacje bezstanowe / stanowe?
Keerthivasan
Zredagowałem odpowiedź, w tym te koncepcje.
Carlos Gavidia-Calderon
13

P1) Oto kilka rzeczy do przeczytania lub więcej w Google:

Główne różnice między usługami sieciowymi SOAP i RESTful w java http://www.ajaxonomy.com/2008/xml/web-services-part-1-soap-vs-rest

To od Ciebie zależy, czego chcesz się najpierw nauczyć. Polecam przyjrzeć się frameworkowi CXF . Możesz zbudować zarówno usługi odpoczynku / mydła.

Q2) Oto kilka dobrych samouczków dotyczących mydła (dodałem je do zakładek):

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

Najlepszym sposobem na naukę jest nie tylko czytanie samouczków. Ale najpierw przejrzałbyś samouczki, aby uzyskać podstawowy pomysł, abyś mógł zobaczyć, że jesteś w stanie coś wyprodukować (lub nie), a to by cię zmotywowało.

WIĘC to świetny sposób na naukę określonej technologii (lub więcej), ludzie zadają wiele dziwnych pytań, a odpowiedzi są coraz dziwniejsze. Ale ogólnie dowiesz się o sposobach rozwiązywania problemów w inny sposób. Może nie wiedziałeś o tym, może nie mogłeś o tym pomyśleć sam.

Zapisz się do kilku interesujących Cię tagów i bądź wytrwały, zadawaj dobre pytania i staraj się udzielać dobrych odpowiedzi, a gwarantuję Ci, że nauczysz się tego w miarę upływu czasu (jeśli jesteś wytrwały).

Q3) Będziesz musiał sam odpowiedzieć na to pytanie. Najpierw decydując, co zbudujesz, w końcu będziesz musiał pomyśleć o jakimś mini projekcie lub czymś takim i zabrać go stamtąd.

Jeśli zdecydujesz się użyć CXF jako struktury do tworzenia usług REST / SOAP, polecam zajrzeć do tej książki Apache CXF Web Service Development. Jest fantastyczny, nie jest trudny do odczytania i też nie za duży (wygrana wygrana).

Mrówka
źródło
7

SOAP WS obsługuje zarówno zdalne wywoływanie procedur (tj. RPC), jak i style integracji oprogramowania pośredniego zorientowanego na komunikaty (MOM). Restful Web Service obsługuje tylko styl integracji RPC.

SOAP WS jest niezależny od protokołu transportowego. Obsługuje wiele protokołów, takich jak HTTP (S), Messaging, TCP, UDP SMTP itp. REST jest specyficzny dla protokołu transportowego. Obsługuje tylko protokoły HTTP lub HTTPS.

SOAP WS dopuszcza tylko format danych XML. Ty definiujesz operacje, które tunelują przez POST. Nacisk kładziony jest na dostęp do nazwanych operacji i ujawnianie logiki aplikacji jako usługi. REST zezwala na wiele formatów danych, takich jak XML, dane JSON, tekst, HTML itp. Można użyć dowolnej przeglądarki, ponieważ podejście REST wykorzystuje standardowe operacje GET, PUT, POST i DELETE w sieci Web. Nacisk kładziony jest na dostęp do nazwanych zasobów i ujawnianie danych jako usługi. REST obsługuje AJAX. Może używać obiektu XMLHttpRequest. Dobre dla bezstanowych operacji CRUD (tworzenie, odczytywanie, aktualizowanie i usuwanie). GET - Represent () POST - acceptRepresention () PUT - storeRepresention () DELETE - removeRepresention ()

Odczytów opartych na protokole SOAP nie można buforować. Odczyty oparte na REST mogą być buforowane. Działa i lepiej się skaluje. SOAP WS obsługuje zarówno zabezpieczenia SSL, jak i WS-security, które dodają pewne funkcje bezpieczeństwa przedsiębiorstwa, takie jak utrzymanie bezpieczeństwa do momentu, w którym jest to potrzebne, utrzymywanie tożsamości przez pośredników, a nie tylko wskazywanie tylko SSL, zabezpieczanie różnych części wiadomości za pomocą różne algorytmy zabezpieczeń itp. REST obsługuje tylko zabezpieczenia SSL typu punkt-punkt. SSL szyfruje całą wiadomość, niezależnie od tego, czy jest wrażliwa, czy nie. SOAP zapewnia wszechstronne wsparcie zarówno dla zarządzania transakcjami opartego na ACID dla transakcji krótkotrwałych, jak i zarządzania transakcjami opartego na wynagrodzeniach dla transakcji długotrwałych. Obsługuje również zatwierdzanie dwufazowe w rozproszonych zasobach. REST obsługuje transakcje,

SOAP ma wbudowaną logikę powodzenia lub ponawiania i zapewnia niezawodność od końca do końca nawet za pośrednictwem pośredników SOAP. REST nie ma standardowego systemu obsługi wiadomości i oczekuje, że klienci wywołujący usługę będą radzić sobie z awariami komunikacji, ponawiając próbę.

źródło http://java-success.blogspot.in/2012/02/java-web-services-interview-questions.html

murali
źródło
> Restful Web Service obsługuje tylko styl integracji RPC. REST to nie RPC, mówi RPC, „zdefiniuj metody, które coś robią”, podczas gdy REST mówi, „zdefiniuj pewne zasoby i będą one miały te metody”. peej.co.uk/articles/rest.html
urmalp
0

Jeśli Twoja aplikacja często korzysta z protokołu http, to REST jest najlepszy ze względu na niewielką wagę i świadomość, że Twoja aplikacja używa tylko protokołu http, wybór SOAP nie jest tak dobry, ponieważ jest ciężki, Lepiej podjąć decyzję o wyborze usługi internetowej na podstawie używanych przez nas protokołów w naszych aplikacjach.

czuć się dobrze i programować
źródło