Сървър на приложения, уеб сървър: Каква е разликата?

23 август 2002 г.

В: Каква е разликата между сървъра за приложения и уеб сървъра?

A:

Уеб сървърът обработва изключително HTTP заявки, докато сървърът за приложения обслужва бизнес логика на приложните програми чрез произволен брой протоколи.

Нека разгледаме всеки по-подробно.

Уеб сървърът

Уеб сървърът обработва HTTP протокола. Когато уеб сървърът получи HTTP заявка, той отговаря с HTTP отговор, като например изпращане обратно на HTML страница. За да обработи заявка, уеб сървър може да отговори със статична HTML страница или изображение, да изпрати пренасочване или да делегира генерирането на динамичен отговор на друга програма като CGI скриптове, JSP (JavaServer Pages), сървлети, ASP (Active Server Pages) ), JavaScripts от страна на сървъра или някаква друга технология от страна на сървъра. Каквато и да е тяхната цел, такива сървърни програми генерират отговор, най-често в HTML, за преглед в уеб браузър.

Разберете, че моделът на делегиране на уеб сървър е доста прост. Когато заявка влезе в уеб сървъра, уеб сървърът просто предава заявката на програмата, която е в състояние да се справи с нея. Уеб сървърът не предоставя никаква функционалност освен просто осигуряване на среда, в която програмата от страна на сървъра може да изпълнява и връща генерираните отговори. Програмата от страна на сървъра обикновено осигурява за себе си такива функции като обработка на транзакции, свързаност с база данни и съобщения.

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

Сървърът на приложения

Що се отнася до сървъра за приложения, според нашето определение сървърът за приложения излага бизнес логика на клиентски приложения чрез различни протоколи, включително HTTP. Докато уеб сървърът основно се занимава с изпращане на HTML за показване в уеб браузър, сървърът за приложения предоставя достъп до бизнес логика за използване от клиентски приложни програми. Приложната програма може да използва тази логика точно както би извикала метод за обект (или функция в процедурния свят).

Такива клиенти на сървъри за приложения могат да включват GUI (графичен потребителски интерфейс), работещ на компютър, уеб сървър или дори други сървъри за приложения. Информацията, пътуваща напред-назад между сървъра за приложения и неговия клиент, не се ограничава до просто маркиране на дисплея. Вместо това информацията е програмна логика. Тъй като логиката приема формата на извиквания на данни и методи, а не на статичен 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, консултантска фирма, специализирана в преодоляване на различни корпоративни системи и обучение. Извън първокласното консултиране, Тони е активен писател на свободна практика, както и автор на Sams Teach Yourself Обектно-ориентирано програмиране за 21 дни (Sams, 2001; ISBN: 0672321092).

Научете повече за тази тема

  • За повече статии за сървърите на приложения разгледайте раздела Java Application Server в Тематичния индекс на JavaWorld

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

  • Искам още? Вижте индексната страница за въпроси и отговори на Java за пълния каталог с въпроси и отговори

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

  • За повече от 100 задълбочени съвети Java от някои от най-добрите умове в бизнеса, визита JavaWorld " и 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.