Разница между сервлетом и веб-сервисом

В чем разница между этими двумя? Я нашел несколько результатов в google ничего убедительного.

Вот следующий вопрос:

Скажем, я создаю веб-приложение spring mvc, чтобы аннотировать пару классов с аннотацией @Controller и создать что-то, что успешно перенесет некоторую информацию из внешнего конца → назад и наоборот, и, возможно, какая-то база данных может быть задействована на обратной стороне боковая сторона.

Как бы вы это назвали? Остальное веб-сервис или сервлет или что-то еще?

Ответ 1

веб-служба - это служба, которая предоставляет методы обслуживания своим клиентам, используя для связи либо программную парадигму REST, либо протокол SOAP. Есть несколько способов реализовать веб-сервис. Самый простой способ написания веб-службы - написать класс и аннотировать его аннотациями @WebService и @WebMethod из javax.jws, а затем запустить его из main -method с помощью:

Endpoint.publish("http://localhost:8089/myservice", new MyWebService());

В результате вы можете просматривать WSDL по зарегистрированному URL-адресу, а если у вас есть SoapUI или любой другой клиент SOAP, вы также можете протестировать и использовать свой веб-сервис.

сервлет, с другой стороны, используется для передачи HTTP запросов и ответов. Его можно использовать для написания веб-приложения с JSP и HTML или для обслуживания ответов XML и JSON (как в RESTful-сервисе) и, конечно, также для получения и возврата сообщений SOAP. Вы можете думать об этом как на один уровень ниже веб-служб. Сервлеты имеют свой собственный стандарт, который в настоящее время является спецификацией Java-сервлета версии 4.0

Более всеобъемлющий и практический подход заключается в написании веб-службы с платформой и публикации ее на сервере приложений или в контейнере сервлетов, таких как Tomcat или JBoss. В этом случае вы будете использовать сервлет для обработки транспорта HTTP-запросов, которые передают ваши сообщения SOAP или REST.

Чтобы написать веб-сервис с технологией сервлетов, вы можете, например, использовать JAX-WS (например, для SOAP). Для написания сервисов RESTful вы можете либо использовать JAX-RS (с эталонной реализацией Джерси), либо вы можете использовать Spring WebMVC, но, насколько мне известно, не является основной целью этой структуры, и Джерси значительно проще в использовании.

По второму вопросу: @Controller аннотация - это Spring специфическая аннотация стереотипа, которая сообщает Spring кое-что о том, что должен делать ваш компонент. Что именно будет возвращать метод контроллера, зависит от фактической реализации ваших методов. Вы можете настроить Spring так, чтобы он возвращал простой текст, HTML, JSON, XML, двоичные данные или что угодно.

Примечание на стороне, класс, который помечен @Controller, еще не является сервлетом, это просто бин. То, как вы используете сервлеты, зависит главным образом от того, что вы используете. Например, когда вы используете Spring, работа сервлета выполняется Springs DispatcherServlet, который, в свою очередь, перенаправляет запросы к правильным bean-компонентам. Если вы используете Tomcat, то вы можете напрямую писать свои собственные сервлеты, просто создав подкласс класса javax.servlet.http.HttpServlet и переписав необходимые методы, такие как doGet, который отвечает на запросы HTTP GET из вашего браузера.

Ответ 2

То, что вы описываете, - это веб-приложение, в котором человек использует браузер для взаимодействия с программной системой.

Веб-сервис - это способ, по которому программные системы могут взаимодействовать друг с другом с использованием HTTP и XML или JSON, без участия людей.

Сервлет - это Java-специфический способ написания программного обеспечения, отвечающего на HTTP-запросы. Spring MVC абстрагирует большую часть деталей реализации, чтобы упростить создание веб-приложений, но использует сервлеты под обложками.

Ответ 3

Мое внимание будет заключаться в том, что веб-служба определяет абстракцию более высокого уровня, такую ​​как некоторые специфические для бизнеса функции. Хотя Servlet - это всего лишь компонент программного обеспечения, ответственный за передачу данных.

Реализация веб-службы обычно полагается на сервлет для приема данных. Тем не менее, он может также использовать свой пользовательский уровень для работы с данными протокола.

@Controller, вероятно, больше связан с веб-сервисом, чем сервлет, который также является способом реализации транспорта.

Ответ 4

Наиболее очевидным различием между Servlet и веб-сервисом является: Вы получаете доступ к сервлету через HTTP при доступе к веб-сервису через SOAP (простой объект Протокол доступа). Но на самом деле вы не можете напрямую ссылаться на сервлет, вы можете открывать только URL соединение и поместите некоторый параметр в сервлет, если вызывающий ваше приложение. И вы не можете ограничить, какие параметры может вызвать вызывающий положил. Вызывающий не знает, какие параметры может получить ваш сервлет или. Итак, вам лучше использовать веб-сервис для предоставления API другим приложениям, WSDL файл вашего веб-сервиса может предоставить вызывающему вызывают ваш веб-сервис.

Ответ 5

Сервлет - обработчик HTTP-запросов. Вы можете делать то, что хотите, с входящими запросами. Сервлет запускается на JVM.

Веб-служба привязана к более или менее жесткому протоколу: интерфейс (API) определяется доступными методами и их аргументами и возвращает значения для службы.

Этот интерфейс отображается с использованием механизмов протокола. Эти протоколы агностически связаны с хостом, который будет запускать службу: вы можете определить тот же веб-сервис, используя PHP, Java, С# или свой собственный язык. Вам нужно только иметь часть кода, способную понимать запросы к протоколу и способные давать ответы, читаемые клиентом.

Например SOAP - это протокол веб-службы: Определение Википедии:

SOAP, первоначально определяемый как Simple Протокол доступа к объектам - это протокол спецификация для обмена структурированной информации в внедрение веб-служб в компьютерных сетей.

Ответ 6

Веб-службы работают на более высоком уровне, чем сервлеты. Сервлеты - это API, который прост и предоставляет возможности для написания компонентов на стороне сервера.

Например, RESTfull - это веб-служба, которая содержит множество других функций и сервлетов. Для развертывания мы можем определить web.xml как -

<servlet>
<servlet-name>jersey-serlvet</servlet-name>
<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
<init-param>
    <param-name>com.sun.jersey.config.property.packages</param-name>
    <param-value>jersey.rest.test</param-value>
</init-param>
<load-on-startup>1</load-on-startup>

который является не только сервлетом

Ответ 7

Веб-служба использует класс ServletContainer, который снова является классом Servlet, который обрабатывает запрос чистым и структурированным способом. REST означает REpresentational STateless Protocol. Здесь запрос не будет хранить никаких данных.

Веб-служба REST поддерживает методы HTTP

  • GET - обычно для получения данных.
  • POST. Чтобы вставить новый объект.
  • PUT - обновить существующий объект.
  • DELETE - удалить объект.

Мы можем сопоставить любое количество URL-адресов с классом веб-службы, которые могут иметь любые типы HTTP-методов.

С другой стороны, для каждого сервлета может быть выполнено только одно URL-сопоставление. Хотя конечное требование может быть достигнуто с помощью условий параметров запроса, но использование сервлета в настоящее время не будет обеспечивать чистый способ.

В веб-сервисе мы можем определить URL-адрес в уровне класса, а также Уровень метода, что позволяет нам кодировать более структурированным способом.