Сервер приложений, веб-сервер: в чем разница?

23 августа 2002 г.

В: В чем разница между сервером приложений и веб-сервером?

А:

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

Разберем каждую подробнее.

Веб-сервер

Веб-сервер обрабатывает протокол HTTP. Когда веб-сервер получает HTTP-запрос, он отвечает HTTP-ответом, например, отправляя обратно HTML-страницу. Для обработки запроса веб-сервер может ответить статической HTML-страницей или изображением, отправить перенаправление или делегировать создание динамического ответа какой-либо другой программе, такой как сценарии CGI, JSP (страницы JavaServer), сервлеты, ASP (страницы активного сервера) ), серверные сценарии JavaScripts или другие серверные технологии. Каковы бы ни были их цели, такие серверные программы генерируют ответ, чаще всего в формате HTML, для просмотра в веб-браузере.

Поймите, что модель делегирования веб-сервера довольно проста. Когда запрос поступает на веб-сервер, веб-сервер просто передает запрос программе, которая лучше всего может его обработать. Веб-сервер не предоставляет никаких функций, кроме простого предоставления среды, в которой программа на стороне сервера может выполнять и передавать сгенерированные ответы. Серверная программа обычно обеспечивает такие функции, как обработка транзакций, подключение к базе данных и обмен сообщениями.

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

Сервер приложений

Что касается сервера приложений, согласно нашему определению, сервер приложений предоставляет бизнес-логику клиентским приложениям через различные протоколы, возможно, включая HTTP. В то время как веб-сервер в основном занимается отправкой HTML-кода для отображения в веб-браузере, сервер приложений предоставляет доступ к бизнес-логике для использования клиентскими приложениями. Прикладная программа может использовать эту логику так же, как она вызывала бы метод объекта (или функцию в процедурном мире).

Такие клиенты сервера приложений могут включать в себя графические интерфейсы пользователя (графический пользовательский интерфейс), работающие на ПК, веб-сервере или даже других серверах приложений. Информация, передаваемая между сервером приложений и его клиентом, не ограничивается простой разметкой дисплея. Вместо этого информация представляет собой программную логику. Поскольку логика принимает форму данных и вызовов методов, а не статического HTML, клиент может использовать открытую бизнес-логику, как захочет.

В большинстве случаев сервер предоставляет эту бизнес-логику через компонентный API, такой как компонентная модель EJB (Enterprise JavaBean) на серверах приложений J2EE (Java 2 Platform, Enterprise Edition). Более того, сервер приложений управляет собственными ресурсами. Такие обязанности по хранению шлюза включают безопасность, обработку транзакций, объединение ресурсов и обмен сообщениями. Как и веб-сервер, сервер приложений может также использовать различные методы масштабируемости и отказоустойчивости.

Пример

В качестве примера рассмотрим интернет-магазин, который в режиме реального времени предоставляет информацию о ценах и наличии. Скорее всего, на сайте будет форма, с помощью которой вы сможете выбрать товар. Когда вы отправляете запрос, сайт выполняет поиск и возвращает результаты, встроенные в HTML-страницу. Сайт может реализовать эту функцию множеством способов. Я покажу вам один сценарий, в котором сервер приложений не используется, а другой - без него. Увидев, как эти сценарии различаются, вы сможете понять, как работает сервер приложений.

Сценарий 1: веб-сервер без сервера приложений

В первом сценарии только веб-сервер обеспечивает функциональность интернет-магазина. Веб-сервер принимает ваш запрос, а затем передает его программе на стороне сервера, способной обработать запрос. Программа на стороне сервера ищет информацию о ценах из базы данных или плоского файла. После получения серверная программа использует информацию для формулирования ответа HTML, а затем веб-сервер отправляет его обратно в ваш веб-браузер.

Подводя итог, веб-сервер просто обрабатывает HTTP-запросы, отвечая HTML-страницами.

Сценарий 2: веб-сервер с сервером приложений

Сценарий 2 похож на сценарий 1 в том, что веб-сервер по-прежнему делегирует создание ответа сценарию. Однако теперь вы можете разместить бизнес-логику для поиска цен на сервере приложений. С этим изменением, вместо того, чтобы сценарий знал, как искать данные и формулировать ответ, сценарий может просто вызвать службу поиска сервера приложений. Затем сценарий может использовать результат службы, когда сценарий генерирует свой HTML-ответ.

В этом сценарии сервер приложений обслуживает бизнес-логику для поиска информации о ценах на продукт. Эта функция ничего не говорит об отображении или о том, как клиент должен использовать информацию. Вместо этого клиент и сервер приложений отправляют данные туда и обратно. Когда клиент вызывает службу поиска сервера приложений, служба просто ищет информацию и возвращает ее клиенту.

За счет отделения логики ценообразования от кода, генерирующего ответ HTML, логика ценообразования становится гораздо более многократно используемой между приложениями. Второй клиент, например кассовый аппарат, может также вызвать ту же службу, что и клерк, проверяющий клиента. Напротив, в Сценарии 1 служба поиска цен не может использоваться повторно, поскольку информация встроена в HTML-страницу. Подводя итог, в модели сценария 2 веб-сервер обрабатывает HTTP-запросы, отвечая на HTML-страницу, в то время как сервер приложений обслуживает логику приложения, обрабатывая запросы цен и доступности.

Предостережения

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

Кроме того, большинство серверов приложений также содержат веб-сервер, что означает, что вы можете рассматривать веб-сервер как подмножество сервера приложений. Хотя серверы приложений содержат функции веб-сервера, разработчики редко развертывают серверы приложений в этом качестве. Вместо этого, когда это необходимо, они часто развертывают автономные веб-серверы в тандеме с серверами приложений. Такое разделение функций способствует повышению производительности (простые веб-запросы не влияют на производительность сервера приложений), конфигурации развертывания (выделенные веб-серверы, кластеризация и т. Д.) И позволяет выбирать лучший продукт в своем классе.

Тони Синтес - независимый консультант и основатель First Class Consulting, консалтинговой фирмы, специализирующейся на объединении разрозненных корпоративных систем и обучения. Помимо First Class Consulting, Тони является активным писателем-фрилансером, а также автором книги «Самс научитесь объектно-ориентированному программированию за 21 день» (Sams, 2001; ISBN: 0672321092).

Узнать больше по этой теме

  • Для получения дополнительных статей о серверах приложений просмотрите раздел Серверы приложений Java в тематическом указателе JavaWorld.

    //www.javaworld.com/channel_content/jw-appserv-index.shtml

  • Хочу больше? Полный каталог вопросов и ответов см. На индексной странице Java Q&A.

    //www.javaworld.com/columns/jw-qna-index.shtml

  • Для более чем 100 проницательных Java советов от некоторых из лучших умов в бизнесе, визит JavaWorld» s Java Советы индексной страница

    //www.javaworld.com/columns/jw-tips-index.shtml

  • Узнайте больше о серверах приложений и веб-серверах в нашем обсуждении Enterprise Java.

    //forums.idg.net/[email protected]@.ee6b80a

  • Подпишитесь на бесплатную еженедельную электронную новостную рассылку JavaWorld Enterprise Java

    //www.javaworld.com/subscribe

  • Вы найдете множество статей по ИТ из наших родственных публикаций на .net

Эта история: «Сервер приложений, веб-сервер: в чем разница?» изначально был опубликован JavaWorld.