Мені потрібно вивчити веб-служби на Java. Які в ньому різні типи? [зачинено]


91

Нещодавно я вирішив почати вивчати веб-сервіси Java, і коли я почав шукати підручник для веб-служб Java у google, я виявив, що існує багато типів веб-сервісів на основі XML, SOAP, а також RESTful веб-сервісів.

Крім того, я виявив, що існує специфікація JAX-WS для веб-служб на базі xml та специфікація JAX-RS для створення веб-сервісів RESTful.

Q1) Я заплутався, було б чудово, якщо хтось може допомогти мені зрозуміти різницю між цими різними типами веб-сервісів, щоб я міг вирішити, якому з них навчитися першим.

Q2) Крім того, я хочу глибоко дізнатися про створення різних типів веб-сервісів у Java. Чи існує якийсь підручник або ресурси, які можуть дати розуміння кожного виду веб-сервісу та порівняння між ними.

Q3), виходячи з того, за якими сценаріями та умовами я повинен вирішити, що хочу створити веб-службу на основі XML, а не службу SOAP, або мені слід скористатися послугою RESTful.


Відповіді:


142
  1. Веб-служби SOAP засновані на стандартах і підтримуються майже на кожній програмній платформі: вони значною мірою покладаються на XML і мають підтримку транзакцій, безпеки, асинхронних повідомлень та багатьох інших проблем. Це досить великий і складний стандарт, але він охоплює майже всі ситуації обміну повідомленнями. З іншого боку, служби RESTful покладаються на протокол HTTP та дієслова (GET, POST, PUT, DELETE) для обміну повідомленнями у будь-якому форматі, переважно JSON та XML. Це досить простий та елегантний архітектурний підхід.
  2. Як і в кожній темі Java World, існує кілька бібліотек для створення / використання веб-служб. На стороні SOAP у вас є стандарт JAX-WS та Apache Axis , а в REST серед інших бібліотек ви можете використовувати Restlets або Spring REST Facilities .

З питанням 3 ця стаття стверджує, що служби RESTful є відповідними в таких сценаріях:

  • Якщо пропускна здатність обмежена
  • Якщо ваші операції не мають стану: інформація не зберігається від одного виклику до наступного, і кожен запит обробляється незалежно.
  • Якщо ваші клієнти потребують кешування.

Хоча SOAP - це шлях, коли:

  • Якщо вам потрібна асинхронна обробка
  • Якщо вам потрібен офіційний контракт / інтерфейси
  • У ваших послугах операції мають статус стану: Наприклад, ви зберігаєте інформацію / дані за запитом і використовуєте ці дані для наступного.

11
+1 за чіткість і
виклад

Чітка та чітка відповідь.
Крішна

+1 за гарну відповідь ... !!!
Shailesh Saxena

Хороша відповідь, чи можете ви сказати мені, що таке операції без громадянства / станів?
Keerthivasan

Я редагував відповідь, включаючи ці поняття.
Карлос Гавідія-Кальдерон,

13

Q1) Ось декілька речей, які потрібно прочитати або більше погуглити:

Основні відмінності між SOAP та веб-службами RESTful в Java http://www.ajaxonomy.com/2008/xml/web-services-part-1-soap-vs-rest

Від вас залежить, що ви хочете навчитися в першу чергу. Я б порекомендував вам поглянути на фреймворк CXF . Ви можете побудувати як послуги відпочинку / мила.

Q2) Ось кілька хороших підручників з мила (я їх зробив у закладках):

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

Найкращий спосіб вчитися - це не просто читати підручники. Але спочатку ви пройдете підручники, щоб отримати базову ідею, щоб побачити, що ви можете щось продукувати (чи ні), і це мотивує вас.

ТАК - чудовий спосіб вивчити певні технології (або більше), люди задають багато дивних питань, і є все більш дивні відповіді. Але загалом ви дізнаєтесь про способи вирішення питань іншим способом. Можливо, ви не знали про це, можливо, ви не могли подумати про це самі.

Підпишіться на пару тегів, які вам цікаві, і будьте наполегливими, ставте гарні запитання та намагайтесь дати добрі відповіді, і я гарантую вам, що ви дізнаєтесь це з часом (якщо ви наполегливі).

Q3) Вам доведеться відповісти на це самостійно. Спочатку, вирішивши, що ви збираєтеся будувати, врешті-решт вам потрібно буде продумати якийсь міні-проект чи щось інше і взяти його звідти.

Якщо ви вирішили використовувати CXF як основу для створення служб REST / SOAP, я рекомендую вам переглянути цю книгу Apache CXF Web Service Development. Це фантастика, її не важко читати і не надто велику (виграти перемогу).


7

SOAP WS підтримує як виклики віддалених процедур (тобто RPC), так і стилі інтеграції орієнтованого на повідомлення (MOM). Веб-служба Restful підтримує лише стиль інтеграції RPC.

SOAP WS є нейтральним до транспортного протоколу. Підтримує декілька протоколів, таких як HTTP (S), обмін повідомленнями, TCP, UDP SMTP тощо. REST є специфічним для транспортного протоколу. Підтримує лише протоколи HTTP або HTTPS.

SOAP WS дозволяє лише формат даних XML. Ви визначаєте операції, які проходять через POST. Основна увага приділяється доступу до названих операцій та виставленню логіки програми як послуги. REST дозволяє використовувати різні формати даних, такі як XML, дані JSON, текст, HTML тощо. Можна використовувати будь-який браузер, оскільки підхід REST використовує стандартні веб-операції GET, PUT, POST та DELETE. Основна увага приділяється доступу до названих ресурсів та виставці даних як послуги. REST має підтримку AJAX. Він може використовувати об'єкт XMLHttpRequest. Добре підходить для операцій CRUD (створення, читання, оновлення та видалення). GET - представляти () POST - acceptRepresention () PUT - storeRepresention () DELETE - removeRepresention ()

Читання на основі SOAP неможливо кешувати. Зчитування на основі REST можна кешувати. Краще виконує та масштабує. SOAP WS підтримує як SSL-безпеку, так і WS-безпеку, що додає деякі функції корпоративної безпеки, такі як підтримка безпеки аж до того місця, де це потрібно, підтримка ідентифікаційних даних через посередників, а не просто вказівка ​​на SSL-захист, захищаючи різні частини повідомлення за допомогою різні алгоритми безпеки тощо. REST підтримує лише захист SSL від точки до точки. SSL шифрує ціле повідомлення, незалежно від того, чутливе воно чи ні. SOAP має комплексну підтримку як управління транзакціями на основі ACID для короткочасних транзакцій, так і управління транзакціями на основі компенсації для тривалих транзакцій. Він також підтримує двофазне комітування для розподілених ресурсів. REST підтримує транзакції,

SOAP має вбудовану логіку успіху або повторної спроби та забезпечує наскрізну надійність навіть через посередників SOAP. REST не має стандартної системи обміну повідомленнями, і очікує, що клієнти, що звертаються до служби, вирішуватимуть збої в спілкуванні шляхом повторної спроби.

джерело http://java-success.blogspot.in/2012/02/java-web-services-interview-questions.html


> Веб-служба Restful підтримує лише стиль інтеграції RPC. REST - це не RPC, каже RPC, "визначте деякі методи, які щось роблять", тоді як REST каже, "визначте деякі ресурси, і вони будуть мати ці методи". peej.co.uk/articles/rest.html
urmalp

0

Якщо у вашій програмі часто використовується протокол http, тоді REST найкраще через малу вагу, і знання того, що ваша програма використовує лише протокол http, вибір SOAP не є настільки хорошим, оскільки він важкий, Краще приймати рішення про вибір веб-сервісу на основі протоколів, які ми використовуємо у наших додатках.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.