Архитектура современных Web-приложений
В этой статье мы рассмотрим Web-приложения, которые представляют собой коллекцию элементов Web-узла, программно выполняющих какие-либо действия. Web-приложения создаются таким образом, чтобы они выполнялись на Web-серверах и использовали в качестве пользовательского интерфейса Web-браузеры. Обычно Web-приложения создаются как приложения в архитектуре «клиент-сервер», но как мы увидим в данной статье, серверная часть имеет различные архитектурные решения.
значально
World Wide Web (WWW) представлялась ее создателям как «пространство для обмена
информацией, в котором люди и компьютеры могут общаться между собой» (см. Berners-Lee,
T. WWW: Past, present, and future. Computer 29, 10 (Oct. 1996), pp. 69-77).
Поэтому первые Web-приложения представляли собой примитивные файловые серверы,
которые возвращали статические HTML-страницы запросившим их клиентам. Таким
образом, Web начиналась как документо-ориентированная сеть.
Следующим этапом развития Web стало появление понятия приложений, которые базировались
на таких интерфейсах, как CGI (или FastCGI), а в дальнейшем — на ISAPI. Common
Gateway Interface (CGI) — это стандартный интерфейс с серверами, позволяющий
выполнять серверные приложения, вызываемые через URL. Входной информацией для
таких приложений служило содержимое HTTP-заголовка (и тело запроса при использовании
протокола POST). CGI-приложения генерировали HTML-код, который возвращался браузеру.
Основной проблемой CGI-приложений было то, что при каждом клиентском запросе
сервер выполнял CGI-программу в реальном времени, загружая ее в отдельное адресное
пространство.
Появление Internet Server API (ISAPI) позволило не только решить проблемы производительности, которые возникали с CGI-приложениями, но и предоставить в распоряжение разработчиков более богатый программный интерфейс. ISAPI DLL можно было ассоциировать с расширениями имен файлов через специальную мета-базу. Эти два механизма (CGI и ISAPI) послужили основой создания первого типа Web-приложений, в которых, в зависимости от каких-либо клиентских действий, выполнялся серверный код. Таким образом, стала возможной динамическая генерация содержимого Web-страниц и наполнение Web перестало быть чисто статическим.
Интерфейс ISAPI — это особенность Microsoft Internet Information Server (о последней версии этого продукта вы можете прочесть в статье «Internet Information Services 6.0». ISAPI-приложения представляют собой динамические загружаемые библиотеки (DLL), которые выполняются в адресном пространстве Web-сервера. У других Web-серверов через некоторое время также появилась возможность выполнять приложения, реализованные в виде библиотек. В случае Web-серверов Netscape этот программный интерфейс назывался NSAPI (Netscape Server API). У довольно популярного Web-сервера Apache также имеется возможность выполнять Web-приложения, реализованные в виде библиотек; такие библиотеки называются Apache DSO (Dynamic Shared Objects).
Естественно, что при использовании как CGI-, так и ISAPI-приложений разработчики
в основном решали одни и те же задачи, поэтому естественным шагом стало появление
нового, высокоуровневого интерфейса, который упростил задачи генерации HTML-кода,
позволил обращаться к компонентам и использовать базы данных. Таким интерфейсом
стала объектная модель Active Server Pages (ASP), построенная на основе ISAPI-фильтра.
Основной идеей ASP с точки зрения создания интерфейса приложения является то, что на Web-странице присутствуют фрагменты кода, который интерпретируется Web-сервером и вместо которого пользователь получает результат выполнения этих фрагментов кода.
Вскоре после появления ASP были созданы и другие технологии, реализующие идею
размещения внутри Web-страницы кода, выполняемого Web-сервером. Наиболее известная
из них на сегодняшний день — технология JSP (Java Server Pages), основной идеей
которой является однократная компиляция Java-кода (сервлета) при первом обращении
к нему, выполнение методов этого сервлета и помещение результатов выполнения
этих методов в набор данных, отправляемых в браузер.
Новейшая версия технологии Active Server Pages — ASP .NET, являющаяся ключевой в архитектуре Microsoft .NET Framework. С помощью ASP .NET можно создавать Web-приложения и Web-сервисы, которые не только позволяют реализовать динамическую генерацию HTML-страниц, но и интегрируются с серверными компонентами и могут использоваться для решения широкого круга бизнес-задач, возникающих перед разработчиками современных Web-приложений.
В общем случае клиентом Web-сервера может быть не только персональный компьютер, оснащенный обычным Web-браузером. Одновременно с широким распространением мобильных устройств появилась и проблема предоставления Web-серверами данных, которые могут быть интерпретированы этими устройствами. Поскольку мобильные устройства обладают характеристиками, отличными от характеристик персональных компьютеров (ограниченным размером экрана, малым объемом памяти, а нередко и невозможностью отобразить что-либо, кроме нескольких строк черно-белого текста), для них существуют и другие протоколы передачи данных (WAP — Wireless Access Protocol) и соответствующие языки разметки (WML — Wireless Markup Language, СHTML — Compact HTML и т.п.). При этом возникает задача передачи данных на мобильное устройство в соответствующем формате (и для этой цели существуют специальные сайты), либо, что представляется более удобным, происходит опознание типа устройства в момент его обращения к серверу и преобразование исходного документа (например, в формате XML) в формат, требующийся данному мобильному устройству (например, с помощью XSLT-преобразования).
Другим способом поддержки различных типов клиентов является создание «разумных»
серверных компонентов, которые способны генерировать различный код в зависимости
от типа клиента. Такой подход, в частности, реализован в Microsoft ASP .NET.
Другим направлением развития клиентских частей Web-приложений стало размещение
некоторой части логики приложения (такой как проверка корректности вводимых
данных) в самом Web-браузере. В частности, современные Web-браузеры способны
интерпретировать скриптовые языки (VBScript, JavaScript), код на которых, как
и ASP-код, внедряется в Web-страницу, но интерпретируется не Web-сервером, а
браузером и соответственно выполняется на клиентском устройстве. Кроме того,
современные браузеры способны отображать и выполнять Java-аплеты — специальные
Java-приложения, которые пользователь получает в составе Web-страницы, а некоторые
из браузеров могут также служить контейнерами для элементов управления ActiveX
— выполняющихся в адресном пространстве браузера специальных COM-серверов, также
получаемых в составе Web-страницы. И в Java-аплетах, и в элементах управления
ActiveX можно реализовать практически любую функциональность.
Отметим, что с ростом объема используемых данных и числа посетителей Web-сайтов
возрастают и требования к надежности, производительности и масштабируемости
Web-приложений. Следующим этапом эволюции подобных приложений стало отделение
бизнес-логики, реализованной в Web-приложении, а нередко и сервисов обработки
данных и реализации транзакций от его интерфейса. В этом случае в самом Web-приложении
обычно остается так называемая презентационная часть, а бизнес-логика, обработка
данных и реализация транзакций переносятся в сервер приложений в виде бизнес-объектов.
В зависимости от типа сервера приложений подобные бизнес-объекты могут быть
выполняющимися самостоятельно COM-серверами, CORBA-серверами, а также объектами
COM+, выполняющимися с помощью служб компонентов Windows 2000, или объектами
EJB (Enterprise Java Beans), исполняемыми сервером приложений, поддерживающим
спецификацию J2EE (Java 2 Enterprise Edition). В качестве механизма доступа
к данным подобные объекты могут использовать OLE DB, ODBC, JDBC (это зависит
от того, как реализован бизнес-объект).
Нередко подобные бизнес-объекты предоставляют доступ к данным корпоративных
информационных систем либо реализуют какую-либо часть их функциональности. Нередко
они позволяют, например, интегрировать Web-сайт с CRM-системами (CRM — Customer
Relationship Management — приложения для автоматизации и повышения эффективности
процессов, направленных на взаимоотношения с клиентами, таких как обработка
заказов, маркетинг, обслуживание) или с ERP-системами (ERP — Enterprise Resource
Planning — приложения для автоматизации управления внутрихозяйственными процессами
предприятия, такими как производство, финансы, снабжение, управление персоналом
и др.), сохраняя в корпоративных системах сведения о посетителях сайта и предоставляя
потенциальным клиентам сведения об имеющейся продукции для осуществления заказов.
Поскольку современный Internet — это не столько средство демонстрации присутствия
компании на рынке или инструмент маркетинга, сколько инструмент ведения бизнеса,
достаточно важными становятся задачи реализации организации через Internet таких
взаимоотношений с клиентами, как продажа товаров и услуг. И здесь довольно важными
становятся решения для электронной коммерции типа «предприятие—клиент» (B2C
— business-to-consumer). Не менее важными становятся и задачи интеграции Web-приложений
c данными и приложениями партнеров с целью реализации схемы «предприятие—предприятие»
(B2B — business-to-business), позволяющей заключать торговые сделки между предприятиями,
обмениваться каталогами товаров, проводить аукционы, создавать электронные торговые
площадки.
Отметим, что на рынке программного обеспечения присутствуют средства создания подобного рода приложений и решений — о них можно прочесть в статье «Средства создания приложений электронной коммерции» в настоящем номере нашего журнала.
Отметим, что, будучи составной частью подобного решения, Web-сервер должен уметь не только выполнять приложения и взаимодействовать с сервером приложений, но и использовать сервисы интеграции, сервисы управления приложениями и данными, а также сервисы для разработчиков.
Следующим шагом эволюции Web-приложений, помимо доступа к корпоративным данным и данным партнеров, стало получение доступа к корпоративным приложениям. Для решения этой задачи интеграции Web-приложений с внутренними информационными системами предприятий и с приложениями, обеспечивающими взаимодействие с клиентами и партнерами, используются специальные решения, называемые корпоративными порталами (подробнее о порталах, требованиях к ним, их особенностях и средствах их создания вы можете прочесть в статье «Web-порталы: назначение, преимущества, особенности и средства», опубликованной в данном номере нашего журнала).
Нередко частью портального решения являются средства управления информационным
наполнением Web-сайта — ведь объем данных, доступных пользователям с помощью
сайтов крупных компаний и порталов, сейчас таков, что управление этими данными
«вручную» не представляется возможным. Подробнее об управлении информационным
наполнением и средствах, с помощью которых оно осуществляется, вы сможете прочесть
в статье «Управление информационным наполнением Web-сайтов».
Решение многих описанных выше задач, возникающих при создании современных Web-приложений,
теперь начинает возлагаться на Web-сервисы — не зависящие от платформы, объектной
модели и клиента программные компоненты, которые можно вызывать из клиентских
Web-приложений (а также из самих Web-сервисов) через основанный на протоколе
HTTP и языке XML протокол SOAP. Для описания Web-сервисов используется XML-подобный
язык WSDL, а для организации реестров Web-сервисов, в которых разработчики и
компании могут искать необходимые им сервисы, а также публиковать данные о своих
сервисах — интерфейс UDDI. Более подробно о технологиях, лежащих в основах Web-сервисов,
можно прочитать в статье «Технологии для Web-сервисов», опубликованной в этом
номере.
Поддержка Web-сервисов стала одним из главных стратегических направлений для многих компаний, специализирующихся на выпуске серверов приложений, систем управления базами данных и средств разработки приложений. В публикуемой в данном номере статье «Платформы и средства создания Web-сервисов» мы подробно рассматриваем поддержку Web-сервисов в продуктах таких компаний, как BEA Systems, Borland, Hewlett-Packard, IBM, Microsoft, Oracle, Sun Microsystems и Sybase.
Заключение
В этой статье мы рассмотрели эволюцию архитектуры Web-решений, начиная от простейших хранилищ HTML-страниц и заканчивая современными корпоративными решениями, интегрированными с корпоративными информационными системами и информационными системами партнеров. Попутно мы обсудили задачи, возникающие на каждом этапе развития Web-приложений и технологии, решающие эти задачи, включая CGI, ISAPI, ASP, JSP, применение скриптовых языков, ActiveX и Java-аплетов, взаимодействие с серверами приложений и с базами данных, применение COM, CORBA и EJB, создание и применение Web-сервисов, основанных на XML. Мы также рассмотрели средства создания таких решений, а именно: корпоративные порталы, средства управления информационным наполнением Web-сайтов, приложения для электронной коммерции.
КомпьютерПресс 6'2002