2012-05-11 15 views
89

Niedawno zdecydowałem się rozpocząć naukę o usługach internetowych java i kiedy zacząłem szukać samouczka dla usług internetowych java w google, dowiedziałem się, że istnieje wiele typów opartych na XML opartych na SOAP usług webowych, także RESTful webservices.Potrzebuję uczyć się usług sieciowych w Javie. Jakie są w nim różne typy?

Ponadto, stwierdziłem, że istnieje specyfikacja JAX-WS dla usług internetowych opartych na języku xml oraz specyfikacja JAX-RS do tworzenia RESTful webservices.

Q1) Byłem zdezorientowany, byłoby wspaniale, gdyby ktokolwiek pomógł mi zrozumieć różnicę między tymi różnymi typami serwisów internetowych, abym mógł zdecydować, który z nich powinien się najpierw nauczyć.

Q2) Ponadto chcę dowiedzieć się więcej na temat tworzenia różnych typów usług internetowych w języku Java. Czy jest jakiś tutorial lub zasoby, które mogą dać wgląd w każdy rodzaj usługi internetowej i porównanie między nimi.

Q3) na podstawie jakich scenariuszy i warunków powinienem zdecydować, że chcę utworzyć usługę internetową opartą na XML, a nie usługę SOAP, czy powinienem skorzystać z usługi RESTful.

+0

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

+1

Dobre question.thanks – Krishna

Odpowiedz

138
  1. SOAP Web Services są standardowe i oparte obsługiwana przez niemal każdej platformie oprogramowania: polegają one mocno w XML i posiada wsparcie dla transakcji, bezpieczeństwo, asynchronicznych wiadomości i wiele innych zagadnień. To dość duży i skomplikowany standard, ale obejmuje prawie każdą sytuację komunikacyjną. Z drugiej strony, RESTful services wykorzystuje protokół HTTP i czasowniki (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 budowania/korzystania z usług sieciowych. Po stronie SOAP masz JAX-WS standard i Apache Axis, aw REST możesz używać między innymi bibliotek Restlets lub Spring REST Facilities.

Przy pytaniu 3, this article stwierdza, że ​​REST Usługi są jest właściwa w tym scenariuszy:

  • Jeśli masz ograniczoną przepustowość
  • Jeśli operacje są bezpaństwowcem: Żadne informacje nie są zachowane z jednym wezwaniem do następny, a każde żądanie jest traktowane niezależnie.
  • Jeśli klienci wymagają buforowania.

Podczas SOAP jest droga, gdy:

  • Jeśli potrzebujesz asynchroniczne przetwarzanie
  • Jeśli potrzebujesz formalnej umowy/Interfaces
  • W operacji serwisowych są stanowe: Na przykład, przechowuje informacje/dane na żądanie i używa tych przechowywanych danych na następnym.
+11

+1 za tak jasne i podając scenariusze :) –

+0

Wyraźna i wyraźna odpowiedź. – Krishna

+0

+1 za dobrą odpowiedź ... !!! –

13

Q1) Oto kilka rzeczy do czytania lub Więcej:

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

To do ciebie, co chcesz, aby dowiedzieć się w pierwszej kolejności. Polecam przyjrzeć się ramie CXF. Możesz zbudować zarówno usługi odpoczynku/mydła.

Q2) Oto kilka dobrych tutoriali na mydło (miałem je zakładki):

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

Najlepszy sposób, aby dowiedzieć się nie tylko czytanie samouczki. Ale najpierw musisz przejść przez samouczki, aby uzyskać podstawowy pomysł, dzięki czemu możesz zobaczyć, że jesteś w stanie wyprodukować coś (lub nie) i to zmotywowało Cię do działania.

SO to świetny sposób na poznanie konkretnej technologii (lub więcej), ludzie zadają wiele wiernych pytań, a odpowiedzi są jeszcze dziwniejsze. Ale ogólnie poznasz sposoby rozwiązywania problemów w inny sposób. Może nie wiedziałeś o tym w ten sposób, może sam nie byłbyś w stanie o tym pomyśleć.

Zasubskrybuj kilka interesujących cię tagów i bądź wytrwały, zadawaj dobre pytania i staraj się dawać dobre odpowiedzi, a ja gwarantuję ci, że nauczysz się tego z upływem czasu (jeśli jesteś wytrwały).

Q3) Musisz samodzielnie odpowiedzieć na to pytanie. Najpierw decydując o tym, co masz zamiar zbudować, w końcu będziesz musiał wymyślić jakiś mini projekt lub coś takiego i zabrać go stamtąd.

Jeśli zdecydujesz się użyć CXF jako platformy do budowania usług REST/SOAP, polecam przejrzeć tę książkę Apache CXF Web Service Development. To jest fantastyczne, nie jest trudne do odczytania i nie jest zbyt duże (wygrana wygrana).

+1

+1 dla książki :) – Saju

7

Interfejs SOAP WS obsługuje zarówno style zdalnego wywoływania procedur (tj. RPC), jak i stylu zorientowanego na komunikaty (MOM). Restful Web Service obsługuje tylko styl integracji RPC.

SOAP WS jest neutralny dla 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 zezwala na format danych XML. Definiuje operacje, które przechodzą przez POST. Nacisk kładzie się na dostęp do nazwanych operacji i wystawianie logiki aplikacji jako usługi. REST pozwala na wiele formatów danych, takich jak XML, dane JSON, tekst, HTML itp. Można użyć dowolnej przeglądarki, ponieważ metoda REST wykorzystuje standardowe operacje GET, PUT, POST i DELETE Web. Nacisk kładzie się na dostęp do wskazanych zasobów i udostępnianie danych jako usługi. REST ma obsługę AJAX. Może korzystać z obiektu XMLHttpRequest. Dobre dla operacji bez statkowego CRUD (tworzenie, odczytywanie, aktualizacja i usuwanie). GET - reprezentują() POST - acceptRepresention() PUT - storeRepresention() DELETE - removeRepresention()

SOAP oparty czyta nie mogą być buforowane. Odczyty oparte na REST mogą być buforowane. Wykonuje i skaluje lepiej. SOAP WS obsługuje zarówno zabezpieczenia SSL, jak i WS-security, które dodają niektóre funkcje bezpieczeństwa przedsiębiorstwa, takie jak utrzymywanie bezpieczeństwa aż do momentu, w którym jest ono potrzebne, utrzymywanie tożsamości za pośrednictwem pośredników, a nie tylko wskazywanie tylko na punkt SSL, zabezpieczanie różnych części wiadomości z różnymi algorytmami bezpieczeństwa, itp. REST obsługuje tylko protokoły SSL typu point-to-point.Protokół SSL szyfruje całą wiadomość, niezależnie od tego, czy jest ona poufna czy nie. Usługa SOAP zapewnia kompleksową obsługę zarówno zarządzania transakcjami opartymi na ACID, jak i transakcjami o krótkim czasie trwania oraz zarządzaniem transakcjami opartymi na wynagrodzeniach w przypadku transakcji długotrwałych. Obsługuje również zatwierdzanie dwufazowe między rozproszonymi zasobami. REST obsługuje transakcje, ale nie jest zgodny z ACID ani nie może zapewnić zatwierdzania dwufazowego w rozproszonych zasobach transakcyjnych, ponieważ jest ograniczony przez protokół HTTP.

Protokół SOAP ma wbudowany sukces lub wbudowaną logikę ponowną i zapewnia całkowitą niezawodność nawet poprzez pośredników protokołu SOAP. REST nie ma standardowego systemu przesyłania wiadomości i oczekuje, że klienci wywołają usługę, aby poradzić sobie z błędami komunikacji, ponawiając próbę.

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

+0

> Restful Web Service obsługuje tylko styl integracji RPC. REST to nie RPC, mówi RPC, "zdefiniuj niektóre metody, które coś robią", podczas gdy REST mówi: "zdefiniuj niektóre zasoby i będą one miały te metody". http://www.peej.co.uk/articles/rest.html – pmu

0

Jeśli aplikacja często wykorzystuje protokół http następnie REST jest najlepszy ze względu na jego lekkość, i wiedząc, że aplikacja używa tylko protokół http wyborze SOAP nie jest tak dobre, ponieważ ciężkie, lepiej podejmować decyzje dotyczące wyboru usługi internetowej w oparciu o protokoły, których używamy w naszych aplikacjach.

Powiązane problemy