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

Ни у кого не вызывает сомнения, что связь между внешними и внутренними процессами необходима. Иначе, столкнувшись с не загружающимися страницами или непонятными сообщениями об ошибке ODBC, потенциальные заказчики могут отправиться на сервер конкурента. Но этой важнейшей задачей все вопросы не исчерпываются.

Один из них - масштабируемость. Например, сервер Web, где используются программы CGI для подключения Web-браузера пользователя к базе данных, может прекрасно работать при небольшой нагрузке. Учитывая, что каждый раз при отправке пользователем формы запускается новая программа CGI, популярный сервер может в конечном итоге перестать справляться с одновременным выполнением тысяч программ.

Другой вопрос - адаптируемость. Многие серверы Web, в том числе серверы электронной коммерции первого поколения, опираются на совокупность нетривиальных хаков (в старом, комплиментарном значении слова). Эти связанные вместе программы Java, JavaScript и другие ингредиенты сегодня вполне могут составлять функциональное приложение, но их будет чрезвычайно трудно адаптировать при изменении требований бизнеса.

Ответ на эти и другие вопросы состоит в программном обеспечении, известном как сервер приложений. Цены на это ПО варьируются от нуля (в нескольких редких случаях) до 35 000 долларов в расчете на один процессор. Занимающиеся исследованиями рынка компании International Data Corp. и Forrester Research прогнозируют, что, учитывая важность электронной коммерции и других приложений Web, рынок серверов приложений к 2003 году должен вырасти примерно до 2,5 млрд долларов.

Так что же представляет собой эта носящая столь неопределенное название штука? "Сервер приложений" является ни больше и ни меньше как промежуточным программным обеспечением, или, если вам угодно, n-звенными вычислениями двадцать первого века. Не так давно мы публиковали статью о промежуточном программном обеспечении (см. статью Д. Эйнджела "Промежуточное программное обеспечение" в ноябрьском номере LAN за 1999 год), где читатель может найти определения наиболее важных терминов и примеры традиционного промежуточного программного обеспечения.

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

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

Помимо этого, серверы приложений могут:

  • связывать несколько систем с разным аппаратным обеспечением и различными ОС;
  • контролировать представление информации с помощью таких стандартов, как HTML, Dynamic HTML (DHTML), Extensible Markup Language (XML) и т. д.;
  • упрощать повторное использование программных компонентов, кем бы они ни разрабатывались - независимым разработчиком или собственными силами. Среди них CORBA, COM/DCOM, Inter-ORB Protocol (IIOP) и Enterprise JavaBeans (EJB);
  • обеспечивать доступ к базам данных через такие интерфейсы, как Java Database Connectivity (JDBC) и ODBC или посредством прямой поддержки CICS, SAP, Lotus Notes и т. д.;
  • повышать производительность за счет таких возможностей, как распределение нагрузки, кластеризация и оперативная замена;
  • поддерживать функции защиты, такие, как Secure Sockets Layer (SSL), идентификация и цифровые сертификаты;
  • объединять все вышеперечисленное в интегрированную среду разработки (Integrated Development Environment, IDE).

ШУМИХА ВОКРУГ "БОБОВ"

Несмотря на то что они представляют собой далеко не единственную значительную компонентную архитектуру - COM+ и CORBA не стоит сбрасывать со счетов - Enterprise JavaBeans (EJB) вызвали настоящий бум на рынке серверов приложений. Этот ажиотаж заслуживает того, чтобы уделить внимание его причинам. Многие помнят первую волну шумихи вокруг Java, низкую производительность виртуальных машин Java (Java Virtual Machine, JVM) в браузерах Web и неизбежные сомнения в целесообразности развертывания данной технологии на серверах.

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

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

ШИРОКИЙ ВЫБОР

С консолидацией рынка серверов приложений единственными имеющими вес продуктами будут выпускаемые крупными поставщиками, такими, как IBM, Microsoft, iPlanet (детище альянса Sun Microsystems/Netscape) и Oracle, например. Я не любитель самосбывающихся прогнозов в области программного обеспечения, поэтому в этой статье попытаюсь охарактеризовать свыше 20 имеющихся продуктов. Ввиду ограниченности места это означает, что каждому из продуктов будет уделено всего лишь несколько слов. Однако, благодаря Internet, найти более подробную информацию о каждом продукте не составит труда. В Таблице приводится список URL поставщиков и мест, где можно найти независимые оценки продуктов.

Начну я, пожалуй, по алфавиту - с компании Allaire. Ее ColdFusion Studio представляет собой визуальную среду разработки с собственным языком составления сценариев для сервера на базе тегов. ColdFusion Server - доступный для UNIX и Windows NT - является платформой, где она развертывается. ColdFusion не поддерживает EJB, но расширяется с помощью CORBA, COM и С/С++. ColdFusion имеет обширные средства взаимодействия с базами данных, вдобавок поддерживает кластеризацию с распределением нагрузки и оперативной заменой.

WebObjects компании Apple является одним из первых серверов приложений, который Apple приобрела вместе с NeXT. Хвалимый за свою среду разработки, он выполняется на серверах NT, HP-UX, Solaris и MacOS X. Несмотря на сильную поддержку Java - компоновщик интерфейса со средствами буксировки обеспечивает контроль над клиентскими апплетами, пользовательскими интерфейсными элементами Swing и JavaBeans - WebObjects не предусматривает сколь-нибудь серьезную поддержку EJB.

BEA предлагает WebLogic Server, который она приобрела в 1998 г. WebLogic одним из первых перешел на Java, а компания дополнила свои нестандартные API поддержкой EJB. Среди его наиболее заметных особенностей поддержка Java Server Pages (JSP) и Java Messaging Standard, причем последний предлагает эффективный механизм организации очередей сообщений.

Bluestone Software, еще один пионер на рынке серверов приложений, предлагает Sapphire/Web. Ценимый за свою объектно-ориентированную среду разработки, этот продукт предлагает разработчикам выбор между Java и C. Он поддерживает множество серверов и стандартов, в том числе EJB, XML, COM и CORBA, и позволяет применять любую технологию для пользовательского клиентского интерфейса - XML, Active, ActiveX, Cascading Style Sheets (CSS) и т. д., по желанию. В обзорах Sapphire обычно хвалят за его технологии распределения нагрузки и оперативной замены.

Enhydra выпускает одноименный сервер приложений Java/XML в открытых кодах. Enhydra не поддерживает EJB, хотя и планирует это сделать в 2000 г. Однако компания предлагает уникальный инструмент XML Compiler (XMLC), он устраняет недостатки встраивания кода в HTML за счет преобразования страниц XML в классы Java.

Сервер приложений GemStone/J от GemStone Systems очевидным образом ориентируется на Java. Базирующийся на технологии Java 2 Enterprise Edition (J2EE), он поддерживает EJB, JSP и CORBA Object Request Broker (ORB), сам написанный на Java. Java также является базисом для Object Transaction Monitor (OTM).

Haht Software предлагает сервер приложений со встроенной поддержкой как COM/DCOM, так и CORBA. Несмотря на его конкурентоспособность и с точки зрения масштабируемости, и с точки зрения управляемости, наиболее привлекательной его возможностью является IDE: с ее помощью разработчики могут создавать приложения с использованием Java- или Visual Basic 3.0-совместимого HAHTalk Basic, а затем скомпилировать их в файлы .class или машинно-независимый псевдокод (p-код).

WebSphere компании IBM - тяжеловес среди серверов приложений, он ориентируется исключительно на мир EJB/CORBA и выполняется практически на всех имеющихся платформах - NT, Linux, NetWare (в пакете с которой он поставляется), OS/2, AS/400 и OS/390. Экономичное Standard Edition предоставляет средства взаимодействия с базами данных и управления сеансами и состояниями, а также поддержку XML, сервлетов и JSP. Advanced Edition включает помимо перечисленного архитектуру EJB, поддержку CORBA и возможность соразмещения нескольких серверов. Enterprise Edition интегрировано с транзакционной прикладной средой TXSeries и обменом сообщений MQSeries.

Сервер приложений IE Integrator от IE, ранее известной как Amazon Integrator, предназначается главным образом для упрощения доступа и инкапсуляции данных от унаследованных систем. Поддерживая такие стандарты, как COM и CORBA, он предоставляет прямые драйверы для баз данных DB2, Oracle, Sybase и SQL Server, а также обеспечивает доступ к другим базам данных через ODBC. Он также связывает разнообразные мэйнфреймы и мини-компьютеры. Двухсторонняя поддержка XML упрощает преобразование документов XML в HTML для конечных пользователей или в данные для передачи обратно унаследованному хосту.

ForeSite от InfoSpinner также специализируется на интеграции унаследованных платформ. Он имеет System Integration Modules (SIM) для инкапсуляции данных от терминальных систем, COM, ActiveX, классов и методов Java, CICS и даже MQSeries. Доступ к базам данных осуществляется, однако, только через ODBC - никаких прямых драйверов баз данных не прилагается. Хорошо это или плохо, но базовые компоненты ForeSite выполняются только на платформе Windows.

Inprise (урожденная Borland) рекламирует свой последний Inprise Application Server как первый действительно интегрирующий EJB и CORBA. Сервер создан на базе VisiBroker 4, модифицированной версии завоевавшего немало наград программного обеспечения VisiBroker ORB. Кроме того, он тесно связан со средой разработки JBuilder Java и с AppCenter, инструментом для централизованного управления приложениями, выполняющимися в разных местах.

Множество продуктов iPlanet, детища альянса Sun/Netscape, непросто охарактеризовать в одном абзаце. Вкладом Sun является NetDynamics, популярный сервер приложений, который компания приобрела совсем недавно, а вкладом Netscape - Netscape Application Server (NAS), ранее известный как Kiva Enterprise Server. (Кроме того, Sun недавно приобрела Forte, разработчика интеграционной среды на базе XML.)

Как утверждают в iPlanet, в течение 2000 года NAS и NetDynamics будут преобразованы в iPlanet Application Server с использованием кодов первого, но с добавлением поддержки приложений второго. Между тем и NetDynamics, и NAS поддерживают модель программирования J2EE и включают в свои продукты новые экспертные средства для облегчения программирования.

Microsoft, главный соперник альянса iPlanet, не выпускает своего собственного сервера приложений, хотя встроенные в NT возможности, такие, как COM+, Active Server Pages (ASP) и Microsoft Transaction Server, могут использоваться и для этих целей. Как утверждают в компании, вслед за Windows 2000 Microsoft собирается выпустить пакет под названием Application Server Extension. Он будет обладать неограниченными кластерными возможностями, упрощенными средствами администрирования и лучшей отказоустойчивостью. Не надейтесь, однако, на поддержку EJB: Microsoft предпочитает C++.

Oracle Application Server (OAS) - продукт корпоративного уровня, т. е., как видно по его происхождению, он предназначен как для обслуживания приложений, так и для управления транзакциями. Его основу составляет CORBA-совместимый ORB, масштабируемый от одного до четырех процессоров в системах симметричной многопроцессорной обработки. OAS поддерживает основные стандарты на транзакции, а кроме того, сертификаты X.509 и SSL 3.0. Что касается OAS 4.0.8, то продукт поддерживает также EJB 1.0, JSP и сервлеты.

PowerTier Advanced Server от Persistence Software предлагает полномасштабную реализацию EJB. Как и предложение Inprise, он - один из немногих серверов приложений EJB, обеспечивающий поддержку CORBA 2.2 и 2.3, в том числе Portable Object Adapter (POA). Продукты PowerTier также реализуют патентованную технологию кэширования на уровне приложений - хранение объектов и их взаимосвязей в оперативной памяти для повышения производительности.

Pervasive Software, известная базой данных Btrieve, вышла на рынок серверов приложений со своим Tango 2000. Имеющий версии для Windows, Solaris, Linux и даже MacOS, он обеспечивает быстрое макетирование с помощью IDE и интегрированного механизма баз данных SQL. (Кроме того, он имеет драйверы ODBC, а также непосредственную поддержку баз данных Oracle.)

Progress Software теперь является владельцем Apptivity, чей сервер приложений Apptivity написан полностью на Java. Он использует CORBA в качестве своей распределенной модели и EJB в качестве своей модели программирования. Сервер способен распознавать различные клиентские браузеры и JVM, а затем автоматически генерировать оптимальную комбинацию HTML, DHTML, XML, Java и JavaScript.

Secant Technologies продает серверы приложений Java и C++ на базе своего сервера Persistent Object Manager (POM), отображающего объекты Java и C++ на реляционные базы данных. Оба сервера опираются на один и тот же модельный подход, поэтому разработчик должен сначала создать модель объекта, аннотировать ее, а затем уже выбрать язык, который он будет использовать для ее воплощения.

SilverStream Software, зарегистрированный член руководящих комитетов J2EE и EJB, поддерживает в своем сервере приложений SilverStream 3.0 все последние стандарты: EJB, сервлеты, JSP, Java 2, Swing и XML. Не менее важны его функции обеспечения постоянной доступности, такие, как возможность автоматического обнаружения и восстановления потерянных соединений с базами данных. Поддерживая JDBC 2.0 и ODBC, SilverStream имеет также множество прямых драйверов баз данных, в том числе Oracle 8i, SQL Server 7.0 и IBM DB/2 5.2.

Enterprise Application Server (EAS) от Sybase базируется на Jaguar Component Transaction Server и сервере динамических страниц Web, ранее известном как PowerDynamo. Богатый опыт компании в качестве поставщика шлюзов в базы данных не мог не дать себя знать: покупатели EAS получают каналы в базы данных Sybase и Oracle с невысокими накладными расходами, интеграцию SAP и CICS и многие дополнительные шлюзы. Со своим более широким, чем обычный, подходом к компонентам EAS позволяет закодировать бизнес-логику с помощью Java, PowerBuiler, C++, CORBA, COM или комбинации названных.

Novera (ранее известный как jBusiness) компании TSI Software предлагает функции сервера приложений, к которым вы, наверно, уже привыкли, в том числе поддержку EJB, COM и CORBA, а также экспертов, помогающих в конструировании объектов. Однако он отличается от других сразу в нескольких отношениях. Например, хотя кэширование данных осуществляют и некоторые другие серверы приложений, Novera предусматривает три уровня кэша: для потока, для клиента и разделяемый (для данных только для чтения). И хотя распределение нагрузки осуществляют и некоторые другие серверы, Novera идет еще дальше, позволяя настраивать алгоритм распределения нагрузки в соответствии со следующими принципами: первый доступный, наименее загруженный, выбранный случайным образом и определенный разработчиком.

Наконец, Business Logic Server от Vision Software, стопроцентно базирующийся на Java, предлагает все те же обязательные возможности, что и большинство других серверов - EJB, CORBA, IIOP, распределение нагрузки и т. д. Его сильная сторона - JADE Developer Studio, среда разработки, с помощью которой бизнес-логика применяется к компонентам. Хотя большинство IDE имеют одинаковые возможности, JADE позволяет гораздо проще, чем обычно, определить отношения "отец-сын", ввести ограничения на компоненты и т. д.

ИСЧЕЗНОВЕНИЕ СЕРВЕРОВ ПРИЛОЖЕНИЙ?

Серверы приложений призваны решить две задачи: во-первых, преобразовать бизнес-логику в программный код, во-вторых, переместить этот код на промежуточный уровень, чтобы он мог поддерживать несколько серверов баз данных и разные тонкие клиенты - браузеры Web, WAP-совместимые устройства, пейджеры и т. д. Учитывая экспоненциальный рост электронной коммерции и распространение мнения об окончании эпохи ПК, спрос на серверы приложений будет продолжать расти.

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

Мой прогноз - некоторые из инфраструктурных функций, выполняемые в настоящее время серверами приложений, переместятся в другое место и станут привычной составляющей серверов Web и ОС. К тому времени, когда это произойдет, разработка программного обеспечения (и такие вопросы, как ежедневное изменение кода в соответствии с быстро меняющимися требованиями бизнеса) будет представлять еще более серьезную проблему. Если я окажусь прав, то наиболее успешными серверами приложений завтра окажутся те, что сегодня имеют наилучшие IDE.

Джонатан Эйнджел - старший редактор Network Magazine. С ним можно связаться по адресу: jangel@mfi.com.


Ресурсы Internet

Webreview.com создала отличающийся ясностью изложения специальный раздел по серверам приложений на http://www.webreview.com/pub/app_servers/.

Общая информация и регулярно обновляемые обзоры программного обеспечения серверов приложений можно найти на http://serverwatch.com/appservers.html.

Диаграмму сравнения серверов приложений, составленную Information Week, можно посмотреть на http://img.cmpnet.com/infoweek/727/graphics/appserv.pdf/.

Еще один сервер с новостями и обзорами - http://appserver-zone.com.

Sun Microsystems предлагает обзорную статью о технологии Enterprise JavaBeans на http://java.sun.com/products/ejb/white_paper.html.

Исследования рынка публикует Doculabs, специалист в области серверов приложений. См. http://www.doculabs.com.


Рассматриваемые серверы приложений

Allaire ColdFusion Studio http://www.allaire.com



AppleWebObjects http://www.apple.com



BEA WebLogic Server http://www.beasys.com



Bluestone Software Sapphire/Web http://www.bluestone.com



Enhydra Enhydra Java/Extensible Markup Language (XML) Application Server http://www.enhydra.org



GemStone Systems GemStone/J http://www.gemstone.com



Haht Software Haht Application Server http://www.haht.com



IBM WebSphere http://www.ibm.com/software/webservers/appserv/



IE IE Integrator http://www.ie.com



InfoSpinner ForeSite http://www.infospinner.com



Inprise Inprise Application Server http://www.inprise.com



iPlanet Netscape Application Server, NetDynamics, iPlanet Application Server http://www.iplanet.com, http://www.netdynamics.com



Microsoft Отдельного продукта не выпускает, но Microsoft Transaction Server и ожидаемые решения вполне могут использоваться в данном качестве http://www.microsoft.ru



Oracle Oracle Application Server (OAS) http://www.oracle.ru



Persistence Software PowerTier Advanced Server http://www.persistence.com



Pervasive Software Tango 2000 http://www.pervasive.com



Progress Software Apptivity http://www.apptivity.com



Secant Technologies Сервер Persistent Object Manager (POM) http://www.secant.com



SilverStream Software SilverStream 3.0 http://www.silverstream.com



Sybase Enterprise Application Server (EAS) http://www.sybase.ru



TSI Software Novera http://www.novera.com



Vision Software Business Logic Server, JADE Developer Studio http://www.vision-soft.com