Кросс-платформенные и многозвенные технологии

Основные платформы и технологии

Разбить на страницы
Показывать лекцию целиком

Введение

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

Основные аппаратные и программные платформы

Рост компьютерных и информационных технологий за сравнительно недолгое время, прошедшее с момента появления первых компьютеров (конец 1940х гг.) был невероятно стремительным и пока не проявляет никакой тенденции к замедлению. Считается, что каждые 10 лет происходит полная смена технологий в этих областях. В результате невероятно большое число аппаратных и программных технологий и платформ, которые, казалось бы, еще недавно были самыми передовыми и повсеместно используемыми, в настоящее время осталось лишь в памяти тех, кому с ними пришлось работать. Новые поколения разработчиков программного обеспечения, как правило, не знают даже техники и технологий десятилетней давности (а если и знают, то только из специальных ВУЗовских курсов), поскольку состояние дел в области компьютерных и информационных технологий успело полностью поменяться несколько раз за эти годы. Такие стремительные изменения, кстати, делают весьма неустойчивым компьютерный бизнес: на наших глазах многие фирмы-производители оборудования или программного обеспечения, имевшие, казалось бы, сверхустойчивое положение на рынке, в считанные годы проигрывали конкуренцию и иногда полностью исчезали, а на их месте появлялись новые "звезды". Так, к примеру, всего несколько лет назад произошло с одной из крупнейших в компьютерном мире фирмой DEC,долгие годы в значительной мере определявшей пути развития вычислительной техники и программного обеспечения, и сумевшей построить вполне самобытную "цивилизацию" компьютерных и программных решений - фирмы уже больше не существует, а про ее супербрэнды PDP, VAX и соответствующее программное обеспечение помнят весьма немногие. Учитывая все сказанное, представляется практически нецелесообразным давать сколько-нибудь подробный обзор аппаратных и программных архитектур, имеющихся в настоящее время - их срок жизни весьма мал. Ограничимся поэтому лишь весьма схематическим изложением основных платформ, с которыми приходится иметь дело современному разработчику. Весьма условно можно классифицировать основные встречающиеся в наше время аппаратные платформы следующим образом.

  • Платформы на базе процессоров Intel и их аналогов ( AMD ).
  • Высокопроизводительные сервера и рабочие станции SUN (на базе процессоров SunSparc ).
  • Высокопроизводительные сервера HP (на базе RISC -процессоров).
  • Платформы Apple.
  • Архитектура процессора: RISC или CISC?

    В 80-х годах прошлого века была предложена архитектура процессора с сокращенным набором машинных команд ( RISC - Reduced Instruction Set Computer ). Дейв Паттерсон и Карло Секуин сформулировали четыре основных принципа архитектуры RISC:

  • Любая операция должна выполняться за один такт, вне зависимости от ее типа.
  • Система команд должна содержать минимальное количество наиболее часто используемых простейших инструкций одинаковой длины.
  • Операции обработки данных реализуются только в формате "регистр-регистр" (операнды выбираются из оперативных регистров процессора, и результат операции записывается также в регистр; а обмен между оперативными регистрами и памятью выполняется только с помощью команд чтения/записи).
  • Состав системы команд должен быть "удобен" для компиляции операторов языков высокого уровня
  • Создатели RISC -процессоров взяли набор из очень простых наиболее часто используемых команд, которые выполняются быстро, и объединили его с такими технологиями, как конвейерная обработка. В результате получился процессор, который имеет лучшую производительность для большинства приложений и теоретически стоит меньше, поскольку сам он небольшой и его производство обходится дешевле. По аналогии процессоры традиционной архитектуры стали называть CISC - Complex Instruction Set Computer.

    В список основных поставщиков RISC -систем входят компании Hewlett-Packard (PA-RISC), Sun Microsystems Computers (SPARC), Digital Equipment (Alpha), Silicon Graphics - модуль MIPS (R210000) и союз IBM и Motorola (PowerPC).

    С другой стороны, семейство Pentium компании Intel продолжает реализацию более традиционной вычислительной архитектуры с полным набором машинных команд (CISC). CISC -процессоры содержат в сотни раз больше команд, чем RISC -процессоры, и используют от 8 до 12 способов адресации памяти по сравнению с 2-3 способами в RISC.Однако технические различия между RISC и CISC в последние годы становятся все менее четкими, особенно в том, что касается общей производительности систем. Одна архитектура заимствует хорошие идеи у другой. Раньше RISC -процессоры определялись как микропроцессоры с количеством команд меньше 128, сейчас же они имеют 200 команд - сравните с набором из 300 и более команд в CISC.Сегодня CISC -процессоры используют конвейеризацию и другие современные технологии. Оба лагеря применяют большую кэш-память для повышения производительности.

    Основные программные платформы можно классифицировать условно следующим образом:

  • Платформы Microsoft (Windows NT/XP/...)
  • Платформы на базе Unix.В последнее время среди версий Unix наиболее популярен Linux разных модификаций. К версиям Unix относятся и системы Solaris (для платформ Sun),а также весьма своеобразный "гибрид" Unix и Windows для платформ Apple - Mac OS.
  • Следует отметить, что операционные системы Unix и созданный вокруг них универсум программных продуктов, идей и технологий, являются одними из едва ли не самых "долгоживущих" в мире программного обеспечения. Первая система Unix,практически ничем принципиально не отличающаяся от ее современных "клонов", была создана более 30 лет назад!

    Состояние корпоративной программной среды типичной организации

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

  • Основная масса компьютеров базируется на платформе Intel или AMD,возможно имеются несколько компьютеров Compaq, Sun и т.п.
  • Используемые операционные системы MS Windows, Linux,другие UNIX- подобные ОС. Основная операционная система, установленная на рабочих местах пользователей - MS Windows.Большинство серверов работает также под Windows.Часть серверов работает под Linux или другими UNIX- подобными ОС.
  • Основное офисное программное обеспечение - MS Office.
  • Основная почтовая программа MS Outlook, MS Outlook Express или специальный почтовый клиент (популярность набирает Mozilla Thunderbird).
  • Основной интернет-браузер MS Internet Explorer (сейчас набирает популярность браузер Mozilla Firefox,иногда используется браузер Opera).
  • Основная система документооборота работает на основе Windows и MS Exchange.
  • Основной Web-сервер Apache или IIS на платформе UNIX или Windows.
  • Основная корпоративная СУБД MS SQL Server или Oracle,также дополнительно используется MS Access или другие СУБД,но исключительно как локальные. В малых компаниях бывают популярны MySQL и PostgreSQL.
  • 1.3. Кросс-платформенные технологии

    Кросс-платформенные технологии обеспечивают совместную эксплуатацию различных аппаратных и программных платформ в интересах организаций-потребителей.

    Основные архитектуры программного обеспечения

    Автономные (standalone) приложения

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

    Двухзвенная архитектура "клиент-сервер"

    Эта архитектура получила распространение с начала 1990-х годов на фоне роста рынка персональных компьютеров и снижения спроса на мэйнфреймы. В архитектуре "клиент-сервер" программное обеспечение разделено на две части -клиентскую часть и серверную часть. Задача клиентской-части (программы-клиента) состоит во взаимодействии с пользователем, передаче пользовательского запроса серверу, получение запроса от серверной части (программы-сервера) и представление его в удобном для пользователя виде. Программа-сервер же обрабатывает запросы клиента и выдает ответы. Классические примеры: Web -технологии (клиент-браузер, сервер- Web -сервер), работа с распределенными СУБД (клиент - специальная программа, сервер - сервер базы данных). Развитие архитектуры "клиент-сервер", а особенно появление современных графических интерфейсов, привело сначала к появлению разновидности архитектуры клиент-сервер, называемой "архитектура с толстым клиентом".Здесь логика представления данных и бизнес-логика размещаются на клиенте, который (скажем, в случае, когда сервером является СУБД ) общается с логикой хранения и накопления данных на сервере, используя язык структурированных запросов SQL.Однако необходимость установки "толстых клиентов", требующих значительного количества специальных библиотек и специальной настройки окружения, на большое число пользовательских компьютеров с различными операционными средами, как правило вызывает массу проблем. Как альтернатива поэтому возникла также двухзвенная архитектура "с тонким клиентом".При этом в идеале программа-клиент реализует лишь графический интерфейс пользователя (GUI) и передает/принимает запросы, а вся бизнес-логика выполняется сервером. В идеале клиентом является просто интернет-браузер, который имеется в стандартной операционной среде любого пользовательского компьютера и не требует специальной настройки, установки специализированного ПО и т.п. К сожалению, такая схема тоже не свободна от недостатков, хотя бы уже потому, что серверу приходится брать на себя иногда не свойственные для него функции реализации бизнес-логики приложения (например, серверу СУБД приходится выполнять расчеты!)

    Многозвенная (multitiered) архитектура

    Начало процессу развития корпоративного программного обеспечения в многозвенной архитектуре было положено еще в рамках технологии "клиент/сервер". В них наряду с клиентской частью приложения и сервером баз данных появились серверы приложений (Application Servers).В идеале:

  • программа-клиент реализует GUI,передает запросы серверу приложений и принимает от него ответ,
  • сервер приложений реализует бизнес-логику и обращается с запросами к серверу "третьего уровня" (например, серверу базы данных за данными),
  • сервер третьего уровня обслуживает запросы сервера приложений.
  • Программа-клиент, таким образом, может быть "тонкой". Преимущества такой архитектуры очевидны:

  • изменения на каждом из звеньев можно осуществлять независимо;
  • снижаются нагрузки на сеть, поскольку звенья не обмениваются между собой большими объемами информации;
  • обеспечивается масштабирование и простая модернизация оборудования и программного обеспечения, поддерживающего каждое из звеньев, в том числе обновление серверного парка и терминального оборудования, СУБД и т.д.;
  • Приложения могут создаваться на стандартных языках третьего или четвертого поколения ( Java, C/C++ ).
  • Следующий логический шаг - дальнейшее увеличение числа звеньев, причем возрастет не только за счет разбиения, когда "утоньшается" каждое из известных технических звеньев, но вся бизнес-модель строится как многозвенная. Современные корпоративные программные системы представляют собой, как правило, сложные системы взаимодействующих между собой на разных уровнях компонентов, каждые из которых могут являться клиентами для одних компонентов и серверами для других.

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

    Общим решением проблемы мобильности такого рода систем является использование технологий, реализующие протоколы удаленного вызова процедур (RPC - Remote Procedure Call) стандартизованным и платформо-независимым способом. При использовании таких технологий обращение к сервису в удаленном узле выглядит как обычный вызов процедуры (методов удаленных объектов). Средства RPC,в которых, естественно, содержится вся информация о специфике аппаратуры локальной сети и сетевых протоколов, переводит вызов в последовательность сетевых взаимодействий. Тем самым, специфика сетевой среды и протоколов скрыта от прикладного программиста.

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

    Технология CORBA

    CORBA (Common Object Request Broker Architecture) - это набор открытых спецификаций интерфейсов, определяющий архитектуру технологии межпроцессного и платформо-независимого манипулирования объектами. Разработчиками данных интерфейсов являются OMG и X/Open.

    Object Management Group, Inc. (OMG) - это интернациональная организация, основана в 1989 г., состоящая более чем из 800 членов: поставщиков информационных систем, разработчиков программного обеспечения и пользователей. OMG продвигает теорию и практику объектно-ориентированной технологии в область практической разработки программного обеспечения. Этот процесс включает в себя разработку промышленных стандартов и спецификаций управления объектами с целью создания общей базы для разработки программного обеспечения. Первоочередными задачами являются: повторное использование, переносимость и интероперабельность объектно-ориентированного программного обеспечения в распределенных, гетерогенных средах. Поддержка данных стандартов создает возможность разрабатывать гетерогенные приложения, работающие на всех основных платформах и операционных системах.

    X/Open - независимая всемирная открытая организация, поддерживаемая большинством крупнейших поставщиков информационных систем, пользовательских организаций и компаний-производителей программного обеспечения. X/Open разрабатывает на основе существующих и создающихся стандартов всеобъемлющее и интегрированное системное окружение - Common Applications Environment (CAE).Компоненты CAE определены в стандартах X/Open CAE.Основная цель CAE - создание пакетов программных интерфейсов (API) которые могут применяться на практике с сохранением максимальной переносимости на уровне исходных кодов программ. API также повышают уровень взаимодействия приложений при помощи предоставления определений и ссылок на протоколы и их профили.

    Вышеназванные спецификации тщательно тестируются, выдержавшим тестирование присваивается X/Open trademark (XPG brand),лицензированная X/Open.

    Концептуальной инфраструктурой, на которой базируются все спецификации OMG,является Object Management Architecture (OMA).В состав OMA входят разнообразные стандартизованные или в настоящий момент стандартизируемые OMG службы, сервисы, программные образцы и шаблоны (CORBAservices, horizontal and vertical CORBAfacilities),язык определения интерфейсов распределенных объектов IDL (Interface Definition Language),стандартизованные или стандартизируемые отображения IDL на языки программирования и, наконец, объектная модель CORBA.

    Реализовать технологию в соответствии со спецификациями может кто угодно. Созданные программные продукты, естественно, уже не являются открытыми, а становятся коммерческими продуктами.

    Архитектура CORBA

    CORBA определяет, каким образом программные компоненты, распределенные по сети, могут взаимодействовать друг с другом вне зависимости от окружающих их операционных систем и языков реализации. Центральным элементом архитектуры CORBA является ORB (Object Request Broker) - программное обеспечение, обеспечивающее связь между объектами, в том числе позволяющее

  • найти удаленный объект по Объектной Ссылке (IOR - Interoperable Object Reference),
  • вызвать метод удаленного объекта, передав ему входные параметры (marshaling parameters),
  • получить возвращаемое значение и выходящие параметры (unmarshaling parameters).
  • Тем самым ORB является связующим звеном между распределенными частями основанной на технологии CORBA системы, позволяя одной части системы не заботиться о физическом расположении других частей (объектов) системы. На рынке представлены ORB разных производителей (например, VisiBroker, WebLogic),но все они соответствуют единой спецификации CORBA. Поэтому в принципе CORBA позволяет строить распределенные системы, одновременно используя ORB разных производителей, и строя систему одновременно на различных платформах и различных сетевых протоколах (это в терминологии CORBA называется интероперабельностью - interoperability).В архитектуре CORBA каждый объект, методы которого доступны другим объектам (обычно его называют CORBA -объектом) имеет уникальную по всей доступной сети Объектную Ссылку (IOR - Interoperable Object Reference),по которой к нему можно обратиться. Искать CORBA -объекты можно как по IOR, так и по символическим именам, если они зарегистрированы (обычно при создании) в специальном сервисе имен (NameService).Для обращения к методам CORBA -объекта последний имеет открытый для всех остальных CORBA -объектов интерфейс. Интерфейсы CORBA -объектов принято описывать на специальном, определенном спецификацией CORBA языке IDL (Interface Definition Language). Производители ORB поставляют вместе с ORB также и утилиты, преобразующие описания интерфейсов CORBA -объектов в конструкции соответствующих языков программирования.

    Основой интероперабельности является протокол GIOP - General inter-ORB Protocol,предназначенный для связи между объектами и ORB в сети. Стандартизация коммуникационного протокола позволяет разработчикам различных частей корпоративной системы совершенно не заботиться об используемых ORBах в других частях ( ORB доменах)

    системы. Почти все современные ORBbi строятся на основе IIOP - Internet inter-ORB Protocol (это версия общего протокола GIOP,предусматривающая использование в качестве транспортного протокола TCP/IP).

    Спецификация CORBA предусматривает также ряд стандартизованных сервисов (CORBA Services) и горизонтальных и вертикальных Общих Средств (Common Facilities). Сервисы представляют собой обычные CORBA -объекты со стандартизованными (и написанными на IDL ) интерфейсами. К таким сервисам относится, например, уже упомянутый сервис имен NameService,сервис сообщений, позволяющий CORBA -объектам обмениваться сообщениями, сервис транзакций, позволяющий CORBA -объектам организовывать транзакции. В реальной системе не обязательно должны присутствовать все сервисы, их набор зависит от требуемой функциональности. На сегодня разработано всего 14 объектных сервисов.

    Между объектными сервисами и общими средствами CORBA нет четкой границы. Последние тоже представляют собой CORBA -объекты со стандартизованными интерфейсами. Common Facilities делятся на горизонтальные (общие для всех прикладных областей) и вертикальные (для конкретной прикладной области). Например, разработаны Common Facilities для медицинских организаций, для ряда производств и т.п.

    Технология SOAP

    Основное содержание SOAP (Simple Object Access Protocol) состоит в обмене сообщениями между удаленными объектами по протоколу HTTP с использованием XML в качестве транспорта. Спецификация SOAP поддерживается и развивается консорциумом W3C (см. http : //www .w3.org/TR/SOAP/).

    По функциональным возможностям технология SOAP весьма сходна с первыми версиями CORBA.Однако у нее есть одно несомненное достоинство: простота. На уровне передачи данных в глобальных сетях, между предприятиями, где большой сложности взаимодействие не предвидится - это оптимальное решение по соотношению время разработки/функциональность. Существуют многочисленные мосты (CORBA/SOAP, C++/SOAP, Java/SOAP).

    Технологии COM/DCOM и .NET

    COM (Component Object Model) - это стандарт Microsoft,определяющий структуру и взаимодействие компонентов программного обеспечения в современных операционных системах MS Windows.Архитектура современных Windows -приложений основана на COM:мир этих приложений - это мир COM -компонент. Компоненты COM обладают уникальностью и предоставляют другим компонентам COM стандартным образом описанные интерфейсы, позволяющие получить доступ к методам этих компонентов. COM определяет механизм связи только между локальными (т.е. находящимися на том же компьютере) компонентами.

    DCOM (Distributed Component Object Model) - это распределенная версия COM, обеспечивающая механизм связи между удаленным COM -компонентами (т.е. находящимися на разных компьютерах, но в среде MS Windows).Фактически DCOM это COM с добавленным к последнему механизмом RPC (remote procedure call).Сходную функциональность взаимодействия удаленных Windows -приложений можно получить с использованием активно развиваемой в последнее время фирмой Microsoft технологии .NET.Важно подчеркнуть, что упомянутые в данном разделе технологии относятся исключительно к операционным системам Microsoft.

    Технология Enterprise Java Beans

    Архитектура EJB - это компонентная архитектура, предназначенная для разработки и развертывания распределенных бизнес-приложений, основанных на компонентах. Приложения, созданные с помощью архитектуры EJB,являются масштабируемыми, ориентированными на транзакции и безопасными при работе в многопользовательском режиме. Эти приложения, однажды написанные, могут затем быть развернуты на любой серверной платформе, поддерживающей спецификацию EJB.Это определение можно немного упростить при помощи описанных ранее понятий. Enterprise Java Beans - это стандартная модель серверных компонентов для мониторов компонентных транзакций. Enterprise Bean -компоненты являются Java (J2EE) объектами, реализующими технологию Enterprise Java Beans (EJB).Каждый такой компонент выполняется под управлением сервера приложений, который должен соответствовать так называемой спецификации EJB- контейнера, т.е. поддерживать соответствующий API - EJB Container API (обычно сервер приложений в таком случае называют EJB -контейнером). EJB -контейнер предоставляет компонентам (Enterprise Beans) сервисы системного уровня (например, многопоточность, механизм транзакций), оставаясь при этом прозрачным для разработчика приложений. Эти системные сервисы позволяют разработчику быстро создавать и разворачивать Enterprise Bean -компоненты: контейнер как бы "закрывает" от разработчика EJB все сложности системного характера (например, уже упомянутые многопоточность или механизм транзакций), позволяя ему сосредоточиться исключительно на бизнес-логике приложения. Enterprise Bean -компонент - это объект требуемого класса, описанного на языке программирования Java,расположенный на стороне сервера приложений и выполняющий часть бизнес-логики приложения (этим занимается собственно код компонента, осуществляющий задачи приложения). Например, в приложении контроля инвентаря, Enterprise Bean -компоненты могут реализовывать бизнес-логику приложения в методах checkInventoryLevel() и orderProduct(). Вызывая эти методы, удаленные клиенты могут получать доступ к инвентарным сервисам приложения.

    Существует несколько причин, по которым использование Enterprise Bean -компонентов упрощает разработку больших распределенных корпоративных приложений.

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

  • Приложение должно быть масштабируемым. Чтобы подстроится к растущему количеству пользователей, разработчикам, возможно, придется распределить компоненты приложения между несколькими серверами. Вне зависимости от компоновки компонент на серверах, их расположение остается прозрачным для клиентов.
  • Требуется механизм транзакция для обеспечения целостности данных. Enterprise Bean -компоненты поддерживают транзакции - механизм, управляющий одновременным доступом к разделяемым объектам.
  • У приложения будет множество клиентов. Требуется всего несколько строк кода в клиентских приложениях для нахождения Enterprise Bean -компонент. Клиентские приложения могут быть небольшими, многочисленными и различными.
  • На сегодняшний день корпорацией Sun Microsystems было выпущено пять спецификации EJB - EJB 1.0, EJB 1.1, EJB 2.0, EJB 2.1 и EJB 3.0. В спецификации EJB 1.0 были впервые описаны сеансовые (session bean) и объектные (entity bean) компоненты. Спецификация EJB 1.1 расширяет спецификацию EJB 1.0EJB 2.0 были добавлены компоненты, управляемые асинхронными сообщениями JMS (Java Messaging Service),а также EJB Query Language (EQL) - язык запросов. В EJB 2.1 был модифицирован и улучшен EQL, добавлена возможность вызова объектных компонент через HTTP/SOAP.Также компоненты, управляемые сообщениями, смогли принимать сообщения не только по протоколу JMS,но и по другим протоколам. Последняя на данный момент версия EJB - EJB 3.0.В ней модифицированы механизмы описания компонент (вместо XML -файла - метаданные), а сам процесс разработки переведен на JAVA 5.0.

    Технология JINI

    Jini представляет собой технологию создания распределенных систем, ориентированную исключительно на использование Java.В настоящий момент Jini является торговой маркой Sun Microsystems.

    Технология Jini состоит из трех основных компонентов:

  • Инфраструктура.Включает в себя распределенную систему защиты, которая интегрирована в RMI (Remote Method Invocation),представляющий собой механизм для нахождения, активации и захвата объектов сервисов.Инфраструктура состоит из объектов, использующих протоколы для передачи информации во время транзакций. На уровне транзакций происходят запросы и передача информации. Для поиска объектов и передачи информации между ними используется менеджер транзакций (transaction manager).Обязанности менеджера транзакций этим не ограничиваются. Помимо этого, он обязан координировать работу системы во время выполнения запросов и передавать найденую по этим запросам информацию;
  • Модель программирования использует язык программирования Java и компоненты JavaBeans для организации интерфейсов транзакций и написания приложений, использующих модель распределенных вычислений;
  • Сервисы имеют определенный унифицированный интерфейс и набор методов, посредством которых возможно общение с ними. Реализация сервисов не требует использования программной модели Jini,однако эта модель необходима при взаимодействии сервисов между собой. Причем сервисы в этом случае чем-то подобны процессам в Unix.Каждый сервис может использовать другие сервисы для выполнения своих задач, а также порождать новые сервисы, специализирующиеся на решении определенных вопросов.
  • В отличие от EJB,технология JINI не требует наличия специальных серверов приложений. Кроме того, если модель использования EJB принципиально двух- или трехзвенна (существует клиент, запрашивающий методы EJB,работающий под управлением контейнера, и, как правило, сервер, например, СУБД, к которому обращается в процессе работы EJB,причем иерархия запросов в этой схеме строго задана), то в модели JINI все сервисы абсолютно равноправны между собой (каждый из них может быть как сервером, так и клиентом к любому). Такая "равноправная" архитектура взаимосвязей называется одноранговой (peer-to-peer).В модели JINI сервисы представляют, таким образом, своего рода "интеллектуальные устройства" (можно представить себе в качестве примера сервис печати), общающиеся между собой по стандартизованным правилам, имеющие стандартизованные имена, общую модель безопасности и т.п. Такой универсум сервисов-"интеллектуальных устройств" JINI принято называть JINI Federation."Интеллектуальные устройства" могут сами добавлять себя в этот универсум (например, сервис печати при включении принтера) или, наоборот, выходить из него (сервис печати при выключении принтера), без необходимости какого-либо "внешнего" воздействия (диспетчера, оператора и т.п.)

    Поиск сервиса, который может выполнить определенную задачу, происходит приблизительно по такому сценарию.

  • Объект клиента посредством провайдера сервисов (Service Provider) - объекта, "специализирующегося" на поиске объектов-сервисов, - находит необходимый сервис.
  • При нахождении необходимого объекта, клиент исследует его, исходя из параметров соответствующего запроса. Это исследование найденого сервиса происходит посредством проверки его свойств.
  • После этого подходящий сервис копируется на локальный диск компьютера клиента.Последующие действия с ним происходят, как с локальным объектом, с помощью вызова его методов, что в некоторой мере разгружает трафик.
  • Технология Jini разрабатывалась с целью создания системы, которая бы требовала к себе мало внимания при обслуживании, успевала за постоянным изменением и наращиванием системы и обеспечивала постоянную доступность сервисов посредством Интернета. Безопасность системы и конфиденциальность информации передаваемой в сети достигается за счет распределенной системы безопасности. Наращиваемость систем возможна за счет добавления новых, наследования и изменения старых сервисов, доступных посредством интернет. Постоянная доступность становится возможной за счет рассредоточенности системы, в которой можно изменять приложения беспрерывно, так, что сервис будет доступен из Интернета постоянно.

    Web-технологии

    Web -технологии чрезвычайно сильно используются в современном корпоративном программном обеспечении. Перечислим основные используемые технологии Web- программирования.

    CGI-скрипты

    CGI -скрипт - это программа, выполняемая на стороне сервера и следующая правилам интерфейса CGI (Common gateway interface).Исторически это первая технология "динамического" программирования для Web. CGI -скрипты могут быть как обычными исполняемыми модулями (написанными на любом языке программирования, например, на C++ ), так и сценариями ("скриптами"), написанными на интерпретируемых языках

    (например, на Perl, Unix shell, Tcl.)

    Последовательность действий при работе с CGI -скриптом следующая:

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

    Специальные интерпретируемые языки скриптов

    Ряд Web -серверов предусматривают встроенные интерпретаторы специальных языков для динамического Web -программирования. Примерами являются ASP для Web -сервера Internet Information Server (IIS) и PHP (например, для Web -сервера Apache).

    ASP (или, соответственно, PHP) страница представляет собой обычный HTML файл, который кроме текста и тэгов HTML содержит еще и конструкции соответствующего языка (ASP или PHP).При запросе этого документа клиентом Web -сервер сначала просматривает документ, интерпретируя директивы соответствующего языка (ASP или PHP) и преобразуя их в обычный статический HTML,который и отдается клиенту. Важно отметить, что как ASP,так и PHP,являются полноценными языками программирования, что позволяет создать с использованием этих технологий сложнейшие Web -системы (вплоть до полномоаштабного управления производством или, например, торговлей). Эти технологии кроме того, весьма просты, и поэтому популярны, например, для создания электронных магазинов. Недостатком является принципиальная интерпретируемость этих языков, а также существенная привязка к конкретному Web- серверу (например, ASP работает только для IIS).

    Апплеты

    Апплеты - это программы на Java,работающие под управлением другой программы (как правило, интернет-браузера). Апплеты загружаются с Web сайта вместе со статическим HTML кодом, а затем выполняются браузером на компьютере пользователя (естественно, для этого браузер использует виртуальную Java -машину). Они могут использоваться для создания богатых графикой и интерактивными возможностями пользовательских интерфейсов, которые не способны выразить средствами обычного языка разметки HTML.Важно однако понимать, что апплет - это интеллектуальная программа, а не просто мультипликация (как, например, Flash анимация). Другими словами, апплет способен обрабатывать действия пользователя и динамически менять свое поведение. При работе с программами, полученными из сети, пользователь может столкнуться с неприятными последствиями их работы. Существует множество вирусов, "троянских коней" или просто некачественных программ. Апплет автоматически запускается при загрузке web- страницы, поэтому апплеты требуют повышенного режима безопасности. Для обеспечения защиты, создателями Java был разработан механизм, получивший название "песочницы" (sandbox),ограничивает доступ "ненадежных" апплетов к компьютеру пользователя. Если разработчику апплета понадобилось расширить возможности апплета - ему необходимо поставить цифровую подпись, тогда апплет воспринимается броузером как "надежный", и вы сами решаете, доверять апплету или нет. Хотя цифровая подпись не обеспечивает вашей безопасности, вы можете установить происхождение апплета, при возникновении проблем. "Песочница" включает в себя три основных механизма защиты:

  • проверки на уровне JVM;
  • защита на уровне языка;
  • интерфейс JavaSecurity.
  • Апплеты могли бы быть почти идеальным со всех точек зрения решением для создателей динамических Web -сайтов и корпоративных Web -систем: они не требуют затрат на установку, соответствуют лозунгу сторонников чистого HTML ("написано однажды -работает везде") и имеют собственный богатый графический пользовательский интерфейс. Но до сих пор эти надежды не сбылись. Апплеты, в общем, используются сравнительно редко. Возможно, потому, что некоторые разработчики неверно оценили накладные расходы при интерпретации байт-кода в виртуальной машине Java.У других множество нареканий вызывает защита, основанная на принципе "песочницы" ( sandbox ), который не позволяет Java использовать в полной мере локальные и удаленные службы. Третьи отмечают различия между виртуальными машинами основных браузеров, имеющихся на рынке. Так или иначе до сих апплеты не оправдали возложенных на них ожиданий, и Web -приложения на базе HTML не были вытеснены Web -приложениями с равным уровнем переносимости и мобильности, но функционально более мощным графическим пользовательским интерфейсом.

    Тем не менее, при помощи апплетов можно сделать немало полезного. Вот несколько ярких примеров.

  • AnywareOffice компании VistaSource (http ://www.anywareoffice.com/). VistaSource использует апплет Java для реализации Applixware,своего популярного офисного пакета, в браузерах, ориентированных на Java.Когда провайдер услуг доступа к приложениям использует AnywareOffice,приложения (такие, как текстовый процессор) работают на сервере, но отображаются в апплете.
  • QuestAgent компании JObjects (http://www.jobjects.com/). Этот апплет представляет собой кроссплатформенный механизм поиска, часто включаемый в состав компакт-диска с публикациями на базе HTML.Браузер может отображать информационное наполнение таких публикаций, но не может выполнять поиск в своем индексе. QuestAgent предлагает мобильный поиск и позволяет отказаться от необходимости создавать и отображать оригинальный механизм поиска.
  • MindTerm компании Mindbright Technologies (http://www.mindbright.com/). Предположим, что пользователь оказался вне офиса, и при нем нет мобильного компьютера, а ему необходимо передать файл на домашний сервер. MindTerm - реализация защищенной версии интерпретатора команд Secure Shell (SSH) на базе Java позволяет преобразовать любой ориентированный на Java браузер в клиент SSH,который можно применять для шифрования сеансов передачи файла.
  • Сервлеты

    Сервлеты - это программы на Java,которые работают на серверном компьютере.Их выполнение инициируется Web -сервером или сервером приложений (Application Server) по запросу клиента. Последовательность выполнения сервлета следующая.

  • Клиент посылает запрос Web -серверу или серверу приложений.
  • Web -сервер или сервер приложений инициирует выполнение сервлета, передавая ему необходимые данные.
  • Сервлет выполняется (как правило, на виртуальной Java -машине сервера), и по окончании работы передает результаты (ответ на исходный запрос) вызвавшему его серверу. При этом сервлет может производить сколь угодно сложные действия, например, обращаться к другим сервлетам или удаленным программам и т.п. Обмен данными между сервлетом сервлетом и сервером происходит при помощи специального Java-API (его главные составляющие это классы HttpServletRequest для передачи запроса и HttpServletResponse для ответа).
  • Сервер отдает полученные от сервлета данные клиенту.
  • На самом деле схема, как правило, чуть более сложная. В связке с сервером работает базовый сервлет. Именно ему сервер отправляет данные и от него же получает ответ, отправляемый клиенту. Фактически, базовый сервлет является "мозгом" сервера. Основная функция этого сервлета - прочитать запрос клиента, расшифровать его и, в соответствиии с расшифровкой, передать работу сервлету, отвечающему за конкретный тип запрашиваемой информации. Зачастую, для достижения скорости, роль базового сервлета играет сам сервер. Именно по такой схеме работает, скажем, Web -сервер Jakarta Tomcat.По сути дела, в этой схеме нет ничего принципиально нового по сравнению с CGI- скриптами, кроме, конечно, большей унифицированности и существенно меньшей зависимости от платформ (благодаря использованию Java).Действительно, сервлеты и были разработаны, чтобы заменить CGI -скрипты.

    Среда исполнения сервлетов, кроме того, обеспечивает некоторые полезные и экономящие время возможности, включая преобразование HTTP-запросов из сети в удобный для использования HttpServletRequest объект, обеспечивая выходной поток для программиста, чтобы использовать его для ответа, и преобразование удобного в работе объекта HttpServletResponse в HTTP-ответ,который может быть послан обратно по сети. Она также обеспечивает удобные возможности управления сессиями, в том числе хранения состояния сессии, что позволяет, например, назначать ресурсы (такие как подключения к базе данных), которые могут использоваться для многократных запросов.

    По сравнению с апплетами сервлеты имеют преимущества с архитектурной точки зрения. Если апплет, посланный по сети, окажется в несовместимой с ним виртуальной машине Java,то он, скорее всего, корректно работать не будет. Сервлет развертывается в более управляемой среде. Так как параметры JVM известны, проблем совместимости не возникает. Более того, среда, которая окружает данную виртуальную машину, может увеличивать производительность сервлета. Некоторые серверы Java -приложений могут компилировать сервлеты в "родной" для себя код и тем самым значительно увеличивать скорость выполнения. Другие серверы запускают параллельно несколько JVM,иногда в различных процессах хостовой ОС. Эти стратегии увеличивают масштабируемость и отказоустойчивость службы.

    Вариантом сервлета является JSP -страница (Java Server Pages). JSP -страница, подобно ASP или PHP скрипту представляет собой обычный HTML файл с записанным внутри него при помощи специального синтаксиса исходным Java -кодом сервлета. Каждая JSP -страница автоматически преобразуется в сервлет Web -сервером при запросе на эту страницу со стороны клиента. Затем сервлет выполняется по описанной схеме. Подытоживая, можно сказать, что сервлеты имеют преимущество максимальной переносимости: они могут работать на большем количестве Web -серверов или серверов приложений и на большем количестве платформ, чем любая другая технология динамических Web -приложений, доступная сегодня. Следует также отметить, что API сервлета намного проще в изучении и в использовании, чем технология EJB,поэтому и применяется пока что чаще (хотя EJB также уже стал фактически промышленной технологией).

    Заключение

    В современном развитии программных и аппаратных платформ прослеживаются две отчетливые тенденции:

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

    Страницы:

    Введение

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

    Основные аппаратные и программные платформы

    Рост компьютерных и информационных технологий за сравнительно недолгое время, прошедшее с момента появления первых компьютеров (конец 1940х гг.) был невероятно стремительным и пока не проявляет никакой тенденции к замедлению. Считается, что каждые 10 лет происходит полная смена технологий в этих областях. В результате невероятно большое число аппаратных и программных технологий и платформ, которые, казалось бы, еще недавно были самыми передовыми и повсеместно используемыми, в настоящее время осталось лишь в памяти тех, кому с ними пришлось работать. Новые поколения разработчиков программного обеспечения, как правило, не знают даже техники и технологий десятилетней давности (а если и знают, то только из специальных ВУЗовских курсов), поскольку состояние дел в области компьютерных и информационных технологий успело полностью поменяться несколько раз за эти годы. Такие стремительные изменения, кстати, делают весьма неустойчивым компьютерный бизнес: на наших глазах многие фирмы-производители оборудования или программного обеспечения, имевшие, казалось бы, сверхустойчивое положение на рынке, в считанные годы проигрывали конкуренцию и иногда полностью исчезали, а на их месте появлялись новые "звезды". Так, к примеру, всего несколько лет назад произошло с одной из крупнейших в компьютерном мире фирмой DEC,долгие годы в значительной мере определявшей пути развития вычислительной техники и программного обеспечения, и сумевшей построить вполне самобытную "цивилизацию" компьютерных и программных решений - фирмы уже больше не существует, а про ее супербрэнды PDP, VAX и соответствующее программное обеспечение помнят весьма немногие. Учитывая все сказанное, представляется практически нецелесообразным давать сколько-нибудь подробный обзор аппаратных и программных архитектур, имеющихся в настоящее время - их срок жизни весьма мал. Ограничимся поэтому лишь весьма схематическим изложением основных платформ, с которыми приходится иметь дело современному разработчику. Весьма условно можно классифицировать основные встречающиеся в наше время аппаратные платформы следующим образом.

  • Платформы на базе процессоров Intel и их аналогов ( AMD ).
  • Высокопроизводительные сервера и рабочие станции SUN (на базе процессоров SunSparc ).
  • Высокопроизводительные сервера HP (на базе RISC -процессоров).
  • Платформы Apple.
  • Архитектура процессора: RISC или CISC?

    В 80-х годах прошлого века была предложена архитектура процессора с сокращенным набором машинных команд ( RISC - Reduced Instruction Set Computer ). Дейв Паттерсон и Карло Секуин сформулировали четыре основных принципа архитектуры RISC:

  • Любая операция должна выполняться за один такт, вне зависимости от ее типа.
  • Система команд должна содержать минимальное количество наиболее часто используемых простейших инструкций одинаковой длины.
  • Операции обработки данных реализуются только в формате "регистр-регистр" (операнды выбираются из оперативных регистров процессора, и результат операции записывается также в регистр; а обмен между оперативными регистрами и памятью выполняется только с помощью команд чтения/записи).
  • Состав системы команд должен быть "удобен" для компиляции операторов языков высокого уровня
  • Создатели RISC -процессоров взяли набор из очень простых наиболее часто используемых команд, которые выполняются быстро, и объединили его с такими технологиями, как конвейерная обработка. В результате получился процессор, который имеет лучшую производительность для большинства приложений и теоретически стоит меньше, поскольку сам он небольшой и его производство обходится дешевле. По аналогии процессоры традиционной архитектуры стали называть CISC - Complex Instruction Set Computer.

    В список основных поставщиков RISC -систем входят компании Hewlett-Packard (PA-RISC), Sun Microsystems Computers (SPARC), Digital Equipment (Alpha), Silicon Graphics - модуль MIPS (R210000) и союз IBM и Motorola (PowerPC).

    С другой стороны, семейство Pentium компании Intel продолжает реализацию более традиционной вычислительной архитектуры с полным набором машинных команд (CISC). CISC -процессоры содержат в сотни раз больше команд, чем RISC -процессоры, и используют от 8 до 12 способов адресации памяти по сравнению с 2-3 способами в RISC.Однако технические различия между RISC и CISC в последние годы становятся все менее четкими, особенно в том, что касается общей производительности систем. Одна архитектура заимствует хорошие идеи у другой. Раньше RISC -процессоры определялись как микропроцессоры с количеством команд меньше 128, сейчас же они имеют 200 команд - сравните с набором из 300 и более команд в CISC.Сегодня CISC -процессоры используют конвейеризацию и другие современные технологии. Оба лагеря применяют большую кэш-память для повышения производительности.

    Основные программные платформы можно классифицировать условно следующим образом:

  • Платформы Microsoft (Windows NT/XP/...)
  • Платформы на базе Unix.В последнее время среди версий Unix наиболее популярен Linux разных модификаций. К версиям Unix относятся и системы Solaris (для платформ Sun),а также весьма своеобразный "гибрид" Unix и Windows для платформ Apple - Mac OS.
  • Следует отметить, что операционные системы Unix и созданный вокруг них универсум программных продуктов, идей и технологий, являются одними из едва ли не самых "долгоживущих" в мире программного обеспечения. Первая система Unix,практически ничем принципиально не отличающаяся от ее современных "клонов", была создана более 30 лет назад!

    Состояние корпоративной программной среды типичной организации

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

  • Основная масса компьютеров базируется на платформе Intel или AMD,возможно имеются несколько компьютеров Compaq, Sun и т.п.
  • Используемые операционные системы MS Windows, Linux,другие UNIX- подобные ОС. Основная операционная система, установленная на рабочих местах пользователей - MS Windows.Большинство серверов работает также под Windows.Часть серверов работает под Linux или другими UNIX- подобными ОС.
  • Основное офисное программное обеспечение - MS Office.
  • Основная почтовая программа MS Outlook, MS Outlook Express или специальный почтовый клиент (популярность набирает Mozilla Thunderbird).
  • Основной интернет-браузер MS Internet Explorer (сейчас набирает популярность браузер Mozilla Firefox,иногда используется браузер Opera).
  • Основная система документооборота работает на основе Windows и MS Exchange.
  • Основной Web-сервер Apache или IIS на платформе UNIX или Windows.
  • Основная корпоративная СУБД MS SQL Server или Oracle,также дополнительно используется MS Access или другие СУБД,но исключительно как локальные. В малых компаниях бывают популярны MySQL и PostgreSQL.
  • 1.3. Кросс-платформенные технологии

    Кросс-платформенные технологии обеспечивают совместную эксплуатацию различных аппаратных и программных платформ в интересах организаций-потребителей.

    Основные архитектуры программного обеспечения

    Автономные (standalone) приложения

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

    Двухзвенная архитектура "клиент-сервер"

    Эта архитектура получила распространение с начала 1990-х годов на фоне роста рынка персональных компьютеров и снижения спроса на мэйнфреймы. В архитектуре "клиент-сервер" программное обеспечение разделено на две части -клиентскую часть и серверную часть. Задача клиентской-части (программы-клиента) состоит во взаимодействии с пользователем, передаче пользовательского запроса серверу, получение запроса от серверной части (программы-сервера) и представление его в удобном для пользователя виде. Программа-сервер же обрабатывает запросы клиента и выдает ответы. Классические примеры: Web -технологии (клиент-браузер, сервер- Web -сервер), работа с распределенными СУБД (клиент - специальная программа, сервер - сервер базы данных). Развитие архитектуры "клиент-сервер", а особенно появление современных графических интерфейсов, привело сначала к появлению разновидности архитектуры клиент-сервер, называемой "архитектура с толстым клиентом".Здесь логика представления данных и бизнес-логика размещаются на клиенте, который (скажем, в случае, когда сервером является СУБД ) общается с логикой хранения и накопления данных на сервере, используя язык структурированных запросов SQL.Однако необходимость установки "толстых клиентов", требующих значительного количества специальных библиотек и специальной настройки окружения, на большое число пользовательских компьютеров с различными операционными средами, как правило вызывает массу проблем. Как альтернатива поэтому возникла также двухзвенная архитектура "с тонким клиентом".При этом в идеале программа-клиент реализует лишь графический интерфейс пользователя (GUI) и передает/принимает запросы, а вся бизнес-логика выполняется сервером. В идеале клиентом является просто интернет-браузер, который имеется в стандартной операционной среде любого пользовательского компьютера и не требует специальной настройки, установки специализированного ПО и т.п. К сожалению, такая схема тоже не свободна от недостатков, хотя бы уже потому, что серверу приходится брать на себя иногда не свойственные для него функции реализации бизнес-логики приложения (например, серверу СУБД приходится выполнять расчеты!)

    Многозвенная (multitiered) архитектура

    Начало процессу развития корпоративного программного обеспечения в многозвенной архитектуре было положено еще в рамках технологии "клиент/сервер". В них наряду с клиентской частью приложения и сервером баз данных появились серверы приложений (Application Servers).В идеале:

  • программа-клиент реализует GUI,передает запросы серверу приложений и принимает от него ответ,
  • сервер приложений реализует бизнес-логику и обращается с запросами к серверу "третьего уровня" (например, серверу базы данных за данными),
  • сервер третьего уровня обслуживает запросы сервера приложений.
  • Программа-клиент, таким образом, может быть "тонкой". Преимущества такой архитектуры очевидны:

  • изменения на каждом из звеньев можно осуществлять независимо;
  • снижаются нагрузки на сеть, поскольку звенья не обмениваются между собой большими объемами информации;
  • обеспечивается масштабирование и простая модернизация оборудования и программного обеспечения, поддерживающего каждое из звеньев, в том числе обновление серверного парка и терминального оборудования, СУБД и т.д.;
  • Приложения могут создаваться на стандартных языках третьего или четвертого поколения ( Java, C/C++ ).
  • Следующий логический шаг - дальнейшее увеличение числа звеньев, причем возрастет не только за счет разбиения, когда "утоньшается" каждое из известных технических звеньев, но вся бизнес-модель строится как многозвенная. Современные корпоративные программные системы представляют собой, как правило, сложные системы взаимодействующих между собой на разных уровнях компонентов, каждые из которых могут являться клиентами для одних компонентов и серверами для других.

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

    Общим решением проблемы мобильности такого рода систем является использование технологий, реализующие протоколы удаленного вызова процедур (RPC - Remote Procedure Call) стандартизованным и платформо-независимым способом. При использовании таких технологий обращение к сервису в удаленном узле выглядит как обычный вызов процедуры (методов удаленных объектов). Средства RPC,в которых, естественно, содержится вся информация о специфике аппаратуры локальной сети и сетевых протоколов, переводит вызов в последовательность сетевых взаимодействий. Тем самым, специфика сетевой среды и протоколов скрыта от прикладного программиста.

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

    Технология CORBA

    CORBA (Common Object Request Broker Architecture) - это набор открытых спецификаций интерфейсов, определяющий архитектуру технологии межпроцессного и платформо-независимого манипулирования объектами. Разработчиками данных интерфейсов являются OMG и X/Open.

    Object Management Group, Inc. (OMG) - это интернациональная организация, основана в 1989 г., состоящая более чем из 800 членов: поставщиков информационных систем, разработчиков программного обеспечения и пользователей. OMG продвигает теорию и практику объектно-ориентированной технологии в область практической разработки программного обеспечения. Этот процесс включает в себя разработку промышленных стандартов и спецификаций управления объектами с целью создания общей базы для разработки программного обеспечения. Первоочередными задачами являются: повторное использование, переносимость и интероперабельность объектно-ориентированного программного обеспечения в распределенных, гетерогенных средах. Поддержка данных стандартов создает возможность разрабатывать гетерогенные приложения, работающие на всех основных платформах и операционных системах.

    X/Open - независимая всемирная открытая организация, поддерживаемая большинством крупнейших поставщиков информационных систем, пользовательских организаций и компаний-производителей программного обеспечения. X/Open разрабатывает на основе существующих и создающихся стандартов всеобъемлющее и интегрированное системное окружение - Common Applications Environment (CAE).Компоненты CAE определены в стандартах X/Open CAE.Основная цель CAE - создание пакетов программных интерфейсов (API) которые могут применяться на практике с сохранением максимальной переносимости на уровне исходных кодов программ. API также повышают уровень взаимодействия приложений при помощи предоставления определений и ссылок на протоколы и их профили.

    Вышеназванные спецификации тщательно тестируются, выдержавшим тестирование присваивается X/Open trademark (XPG brand),лицензированная X/Open.

    Концептуальной инфраструктурой, на которой базируются все спецификации OMG,является Object Management Architecture (OMA).В состав OMA входят разнообразные стандартизованные или в настоящий момент стандартизируемые OMG службы, сервисы, программные образцы и шаблоны (CORBAservices, horizontal and vertical CORBAfacilities),язык определения интерфейсов распределенных объектов IDL (Interface Definition Language),стандартизованные или стандартизируемые отображения IDL на языки программирования и, наконец, объектная модель CORBA.

    Реализовать технологию в соответствии со спецификациями может кто угодно. Созданные программные продукты, естественно, уже не являются открытыми, а становятся коммерческими продуктами.

    Архитектура CORBA

    CORBA определяет, каким образом программные компоненты, распределенные по сети, могут взаимодействовать друг с другом вне зависимости от окружающих их операционных систем и языков реализации. Центральным элементом архитектуры CORBA является ORB (Object Request Broker) - программное обеспечение, обеспечивающее связь между объектами, в том числе позволяющее

  • найти удаленный объект по Объектной Ссылке (IOR - Interoperable Object Reference),
  • вызвать метод удаленного объекта, передав ему входные параметры (marshaling parameters),
  • получить возвращаемое значение и выходящие параметры (unmarshaling parameters).
  • Тем самым ORB является связующим звеном между распределенными частями основанной на технологии CORBA системы, позволяя одной части системы не заботиться о физическом расположении других частей (объектов) системы. На рынке представлены ORB разных производителей (например, VisiBroker, WebLogic),но все они соответствуют единой спецификации CORBA. Поэтому в принципе CORBA позволяет строить распределенные системы, одновременно используя ORB разных производителей, и строя систему одновременно на различных платформах и различных сетевых протоколах (это в терминологии CORBA называется интероперабельностью - interoperability).В архитектуре CORBA каждый объект, методы которого доступны другим объектам (обычно его называют CORBA -объектом) имеет уникальную по всей доступной сети Объектную Ссылку (IOR - Interoperable Object Reference),по которой к нему можно обратиться. Искать CORBA -объекты можно как по IOR, так и по символическим именам, если они зарегистрированы (обычно при создании) в специальном сервисе имен (NameService).Для обращения к методам CORBA -объекта последний имеет открытый для всех остальных CORBA -объектов интерфейс. Интерфейсы CORBA -объектов принято описывать на специальном, определенном спецификацией CORBA языке IDL (Interface Definition Language). Производители ORB поставляют вместе с ORB также и утилиты, преобразующие описания интерфейсов CORBA -объектов в конструкции соответствующих языков программирования.

    Основой интероперабельности является протокол GIOP - General inter-ORB Protocol,предназначенный для связи между объектами и ORB в сети. Стандартизация коммуникационного протокола позволяет разработчикам различных частей корпоративной системы совершенно не заботиться об используемых ORBах в других частях ( ORB доменах)

    системы. Почти все современные ORBbi строятся на основе IIOP - Internet inter-ORB Protocol (это версия общего протокола GIOP,предусматривающая использование в качестве транспортного протокола TCP/IP).

    Спецификация CORBA предусматривает также ряд стандартизованных сервисов (CORBA Services) и горизонтальных и вертикальных Общих Средств (Common Facilities). Сервисы представляют собой обычные CORBA -объекты со стандартизованными (и написанными на IDL ) интерфейсами. К таким сервисам относится, например, уже упомянутый сервис имен NameService,сервис сообщений, позволяющий CORBA -объектам обмениваться сообщениями, сервис транзакций, позволяющий CORBA -объектам организовывать транзакции. В реальной системе не обязательно должны присутствовать все сервисы, их набор зависит от требуемой функциональности. На сегодня разработано всего 14 объектных сервисов.

    Между объектными сервисами и общими средствами CORBA нет четкой границы. Последние тоже представляют собой CORBA -объекты со стандартизованными интерфейсами. Common Facilities делятся на горизонтальные (общие для всех прикладных областей) и вертикальные (для конкретной прикладной области). Например, разработаны Common Facilities для медицинских организаций, для ряда производств и т.п.

    Технология SOAP

    Основное содержание SOAP (Simple Object Access Protocol) состоит в обмене сообщениями между удаленными объектами по протоколу HTTP с использованием XML в качестве транспорта. Спецификация SOAP поддерживается и развивается консорциумом W3C (см. http : //www .w3.org/TR/SOAP/).

    По функциональным возможностям технология SOAP весьма сходна с первыми версиями CORBA.Однако у нее есть одно несомненное достоинство: простота. На уровне передачи данных в глобальных сетях, между предприятиями, где большой сложности взаимодействие не предвидится - это оптимальное решение по соотношению время разработки/функциональность. Существуют многочисленные мосты (CORBA/SOAP, C++/SOAP, Java/SOAP).

    Технологии COM/DCOM и .NET

    COM (Component Object Model) - это стандарт Microsoft,определяющий структуру и взаимодействие компонентов программного обеспечения в современных операционных системах MS Windows.Архитектура современных Windows -приложений основана на COM:мир этих приложений - это мир COM -компонент. Компоненты COM обладают уникальностью и предоставляют другим компонентам COM стандартным образом описанные интерфейсы, позволяющие получить доступ к методам этих компонентов. COM определяет механизм связи только между локальными (т.е. находящимися на том же компьютере) компонентами.

    DCOM (Distributed Component Object Model) - это распределенная версия COM, обеспечивающая механизм связи между удаленным COM -компонентами (т.е. находящимися на разных компьютерах, но в среде MS Windows).Фактически DCOM это COM с добавленным к последнему механизмом RPC (remote procedure call).Сходную функциональность взаимодействия удаленных Windows -приложений можно получить с использованием активно развиваемой в последнее время фирмой Microsoft технологии .NET.Важно подчеркнуть, что упомянутые в данном разделе технологии относятся исключительно к операционным системам Microsoft.

    Технология Enterprise Java Beans

    Архитектура EJB - это компонентная архитектура, предназначенная для разработки и развертывания распределенных бизнес-приложений, основанных на компонентах. Приложения, созданные с помощью архитектуры EJB,являются масштабируемыми, ориентированными на транзакции и безопасными при работе в многопользовательском режиме. Эти приложения, однажды написанные, могут затем быть развернуты на любой серверной платформе, поддерживающей спецификацию EJB.Это определение можно немного упростить при помощи описанных ранее понятий. Enterprise Java Beans - это стандартная модель серверных компонентов для мониторов компонентных транзакций. Enterprise Bean -компоненты являются Java (J2EE) объектами, реализующими технологию Enterprise Java Beans (EJB).Каждый такой компонент выполняется под управлением сервера приложений, который должен соответствовать так называемой спецификации EJB- контейнера, т.е. поддерживать соответствующий API - EJB Container API (обычно сервер приложений в таком случае называют EJB -контейнером). EJB -контейнер предоставляет компонентам (Enterprise Beans) сервисы системного уровня (например, многопоточность, механизм транзакций), оставаясь при этом прозрачным для разработчика приложений. Эти системные сервисы позволяют разработчику быстро создавать и разворачивать Enterprise Bean -компоненты: контейнер как бы "закрывает" от разработчика EJB все сложности системного характера (например, уже упомянутые многопоточность или механизм транзакций), позволяя ему сосредоточиться исключительно на бизнес-логике приложения. Enterprise Bean -компонент - это объект требуемого класса, описанного на языке программирования Java,расположенный на стороне сервера приложений и выполняющий часть бизнес-логики приложения (этим занимается собственно код компонента, осуществляющий задачи приложения). Например, в приложении контроля инвентаря, Enterprise Bean -компоненты могут реализовывать бизнес-логику приложения в методах checkInventoryLevel() и orderProduct(). Вызывая эти методы, удаленные клиенты могут получать доступ к инвентарным сервисам приложения.

    Существует несколько причин, по которым использование Enterprise Bean -компонентов упрощает разработку больших распределенных корпоративных приложений.

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

  • Приложение должно быть масштабируемым. Чтобы подстроится к растущему количеству пользователей, разработчикам, возможно, придется распределить компоненты приложения между несколькими серверами. Вне зависимости от компоновки компонент на серверах, их расположение остается прозрачным для клиентов.
  • Требуется механизм транзакция для обеспечения целостности данных. Enterprise Bean -компоненты поддерживают транзакции - механизм, управляющий одновременным доступом к разделяемым объектам.
  • У приложения будет множество клиентов. Требуется всего несколько строк кода в клиентских приложениях для нахождения Enterprise Bean -компонент. Клиентские приложения могут быть небольшими, многочисленными и различными.
  • На сегодняшний день корпорацией Sun Microsystems было выпущено пять спецификации EJB - EJB 1.0, EJB 1.1, EJB 2.0, EJB 2.1 и EJB 3.0. В спецификации EJB 1.0 были впервые описаны сеансовые (session bean) и объектные (entity bean) компоненты. Спецификация EJB 1.1 расширяет спецификацию EJB 1.0EJB 2.0 были добавлены компоненты, управляемые асинхронными сообщениями JMS (Java Messaging Service),а также EJB Query Language (EQL) - язык запросов. В EJB 2.1 был модифицирован и улучшен EQL, добавлена возможность вызова объектных компонент через HTTP/SOAP.Также компоненты, управляемые сообщениями, смогли принимать сообщения не только по протоколу JMS,но и по другим протоколам. Последняя на данный момент версия EJB - EJB 3.0.В ней модифицированы механизмы описания компонент (вместо XML -файла - метаданные), а сам процесс разработки переведен на JAVA 5.0.

    Технология JINI

    Jini представляет собой технологию создания распределенных систем, ориентированную исключительно на использование Java.В настоящий момент Jini является торговой маркой Sun Microsystems.

    Технология Jini состоит из трех основных компонентов:

  • Инфраструктура.Включает в себя распределенную систему защиты, которая интегрирована в RMI (Remote Method Invocation),представляющий собой механизм для нахождения, активации и захвата объектов сервисов.Инфраструктура состоит из объектов, использующих протоколы для передачи информации во время транзакций. На уровне транзакций происходят запросы и передача информации. Для поиска объектов и передачи информации между ними используется менеджер транзакций (transaction manager).Обязанности менеджера транзакций этим не ограничиваются. Помимо этого, он обязан координировать работу системы во время выполнения запросов и передавать найденую по этим запросам информацию;
  • Модель программирования использует язык программирования Java и компоненты JavaBeans для организации интерфейсов транзакций и написания приложений, использующих модель распределенных вычислений;
  • Сервисы имеют определенный унифицированный интерфейс и набор методов, посредством которых возможно общение с ними. Реализация сервисов не требует использования программной модели Jini,однако эта модель необходима при взаимодействии сервисов между собой. Причем сервисы в этом случае чем-то подобны процессам в Unix.Каждый сервис может использовать другие сервисы для выполнения своих задач, а также порождать новые сервисы, специализирующиеся на решении определенных вопросов.
  • В отличие от EJB,технология JINI не требует наличия специальных серверов приложений. Кроме того, если модель использования EJB принципиально двух- или трехзвенна (существует клиент, запрашивающий методы EJB,работающий под управлением контейнера, и, как правило, сервер, например, СУБД, к которому обращается в процессе работы EJB,причем иерархия запросов в этой схеме строго задана), то в модели JINI все сервисы абсолютно равноправны между собой (каждый из них может быть как сервером, так и клиентом к любому). Такая "равноправная" архитектура взаимосвязей называется одноранговой (peer-to-peer).В модели JINI сервисы представляют, таким образом, своего рода "интеллектуальные устройства" (можно представить себе в качестве примера сервис печати), общающиеся между собой по стандартизованным правилам, имеющие стандартизованные имена, общую модель безопасности и т.п. Такой универсум сервисов-"интеллектуальных устройств" JINI принято называть JINI Federation."Интеллектуальные устройства" могут сами добавлять себя в этот универсум (например, сервис печати при включении принтера) или, наоборот, выходить из него (сервис печати при выключении принтера), без необходимости какого-либо "внешнего" воздействия (диспетчера, оператора и т.п.)

    Поиск сервиса, который может выполнить определенную задачу, происходит приблизительно по такому сценарию.

  • Объект клиента посредством провайдера сервисов (Service Provider) - объекта, "специализирующегося" на поиске объектов-сервисов, - находит необходимый сервис.
  • При нахождении необходимого объекта, клиент исследует его, исходя из параметров соответствующего запроса. Это исследование найденого сервиса происходит посредством проверки его свойств.
  • После этого подходящий сервис копируется на локальный диск компьютера клиента.Последующие действия с ним происходят, как с локальным объектом, с помощью вызова его методов, что в некоторой мере разгружает трафик.
  • Технология Jini разрабатывалась с целью создания системы, которая бы требовала к себе мало внимания при обслуживании, успевала за постоянным изменением и наращиванием системы и обеспечивала постоянную доступность сервисов посредством Интернета. Безопасность системы и конфиденциальность информации передаваемой в сети достигается за счет распределенной системы безопасности. Наращиваемость систем возможна за счет добавления новых, наследования и изменения старых сервисов, доступных посредством интернет. Постоянная доступность становится возможной за счет рассредоточенности системы, в которой можно изменять приложения беспрерывно, так, что сервис будет доступен из Интернета постоянно.

    Web-технологии

    Web -технологии чрезвычайно сильно используются в современном корпоративном программном обеспечении. Перечислим основные используемые технологии Web- программирования.

    CGI-скрипты

    CGI -скрипт - это программа, выполняемая на стороне сервера и следующая правилам интерфейса CGI (Common gateway interface).Исторически это первая технология "динамического" программирования для Web. CGI -скрипты могут быть как обычными исполняемыми модулями (написанными на любом языке программирования, например, на C++ ), так и сценариями ("скриптами"), написанными на интерпретируемых языках

    (например, на Perl, Unix shell, Tcl.)

    Последовательность действий при работе с CGI -скриптом следующая:

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

    Специальные интерпретируемые языки скриптов

    Ряд Web -серверов предусматривают встроенные интерпретаторы специальных языков для динамического Web -программирования. Примерами являются ASP для Web -сервера Internet Information Server (IIS) и PHP (например, для Web -сервера Apache).

    ASP (или, соответственно, PHP) страница представляет собой обычный HTML файл, который кроме текста и тэгов HTML содержит еще и конструкции соответствующего языка (ASP или PHP).При запросе этого документа клиентом Web -сервер сначала просматривает документ, интерпретируя директивы соответствующего языка (ASP или PHP) и преобразуя их в обычный статический HTML,который и отдается клиенту. Важно отметить, что как ASP,так и PHP,являются полноценными языками программирования, что позволяет создать с использованием этих технологий сложнейшие Web -системы (вплоть до полномоаштабного управления производством или, например, торговлей). Эти технологии кроме того, весьма просты, и поэтому популярны, например, для создания электронных магазинов. Недостатком является принципиальная интерпретируемость этих языков, а также существенная привязка к конкретному Web- серверу (например, ASP работает только для IIS).

    Апплеты

    Апплеты - это программы на Java,работающие под управлением другой программы (как правило, интернет-браузера). Апплеты загружаются с Web сайта вместе со статическим HTML кодом, а затем выполняются браузером на компьютере пользователя (естественно, для этого браузер использует виртуальную Java -машину). Они могут использоваться для создания богатых графикой и интерактивными возможностями пользовательских интерфейсов, которые не способны выразить средствами обычного языка разметки HTML.Важно однако понимать, что апплет - это интеллектуальная программа, а не просто мультипликация (как, например, Flash анимация). Другими словами, апплет способен обрабатывать действия пользователя и динамически менять свое поведение. При работе с программами, полученными из сети, пользователь может столкнуться с неприятными последствиями их работы. Существует множество вирусов, "троянских коней" или просто некачественных программ. Апплет автоматически запускается при загрузке web- страницы, поэтому апплеты требуют повышенного режима безопасности. Для обеспечения защиты, создателями Java был разработан механизм, получивший название "песочницы" (sandbox),ограничивает доступ "ненадежных" апплетов к компьютеру пользователя. Если разработчику апплета понадобилось расширить возможности апплета - ему необходимо поставить цифровую подпись, тогда апплет воспринимается броузером как "надежный", и вы сами решаете, доверять апплету или нет. Хотя цифровая подпись не обеспечивает вашей безопасности, вы можете установить происхождение апплета, при возникновении проблем. "Песочница" включает в себя три основных механизма защиты:

  • проверки на уровне JVM;
  • защита на уровне языка;
  • интерфейс JavaSecurity.
  • Апплеты могли бы быть почти идеальным со всех точек зрения решением для создателей динамических Web -сайтов и корпоративных Web -систем: они не требуют затрат на установку, соответствуют лозунгу сторонников чистого HTML ("написано однажды -работает везде") и имеют собственный богатый графический пользовательский интерфейс. Но до сих пор эти надежды не сбылись. Апплеты, в общем, используются сравнительно редко. Возможно, потому, что некоторые разработчики неверно оценили накладные расходы при интерпретации байт-кода в виртуальной машине Java.У других множество нареканий вызывает защита, основанная на принципе "песочницы" ( sandbox ), который не позволяет Java использовать в полной мере локальные и удаленные службы. Третьи отмечают различия между виртуальными машинами основных браузеров, имеющихся на рынке. Так или иначе до сих апплеты не оправдали возложенных на них ожиданий, и Web -приложения на базе HTML не были вытеснены Web -приложениями с равным уровнем переносимости и мобильности, но функционально более мощным графическим пользовательским интерфейсом.

    Тем не менее, при помощи апплетов можно сделать немало полезного. Вот несколько ярких примеров.

  • AnywareOffice компании VistaSource (http ://www.anywareoffice.com/). VistaSource использует апплет Java для реализации Applixware,своего популярного офисного пакета, в браузерах, ориентированных на Java.Когда провайдер услуг доступа к приложениям использует AnywareOffice,приложения (такие, как текстовый процессор) работают на сервере, но отображаются в апплете.
  • QuestAgent компании JObjects (http://www.jobjects.com/). Этот апплет представляет собой кроссплатформенный механизм поиска, часто включаемый в состав компакт-диска с публикациями на базе HTML.Браузер может отображать информационное наполнение таких публикаций, но не может выполнять поиск в своем индексе. QuestAgent предлагает мобильный поиск и позволяет отказаться от необходимости создавать и отображать оригинальный механизм поиска.
  • MindTerm компании Mindbright Technologies (http://www.mindbright.com/). Предположим, что пользователь оказался вне офиса, и при нем нет мобильного компьютера, а ему необходимо передать файл на домашний сервер. MindTerm - реализация защищенной версии интерпретатора команд Secure Shell (SSH) на базе Java позволяет преобразовать любой ориентированный на Java браузер в клиент SSH,который можно применять для шифрования сеансов передачи файла.
  • Сервлеты

    Сервлеты - это программы на Java,которые работают на серверном компьютере.Их выполнение инициируется Web -сервером или сервером приложений (Application Server) по запросу клиента. Последовательность выполнения сервлета следующая.

  • Клиент посылает запрос Web -серверу или серверу приложений.
  • Web -сервер или сервер приложений инициирует выполнение сервлета, передавая ему необходимые данные.
  • Сервлет выполняется (как правило, на виртуальной Java -машине сервера), и по окончании работы передает результаты (ответ на исходный запрос) вызвавшему его серверу. При этом сервлет может производить сколь угодно сложные действия, например, обращаться к другим сервлетам или удаленным программам и т.п. Обмен данными между сервлетом сервлетом и сервером происходит при помощи специального Java-API (его главные составляющие это классы HttpServletRequest для передачи запроса и HttpServletResponse для ответа).
  • Сервер отдает полученные от сервлета данные клиенту.
  • На самом деле схема, как правило, чуть более сложная. В связке с сервером работает базовый сервлет. Именно ему сервер отправляет данные и от него же получает ответ, отправляемый клиенту. Фактически, базовый сервлет является "мозгом" сервера. Основная функция этого сервлета - прочитать запрос клиента, расшифровать его и, в соответствиии с расшифровкой, передать работу сервлету, отвечающему за конкретный тип запрашиваемой информации. Зачастую, для достижения скорости, роль базового сервлета играет сам сервер. Именно по такой схеме работает, скажем, Web -сервер Jakarta Tomcat.По сути дела, в этой схеме нет ничего принципиально нового по сравнению с CGI- скриптами, кроме, конечно, большей унифицированности и существенно меньшей зависимости от платформ (благодаря использованию Java).Действительно, сервлеты и были разработаны, чтобы заменить CGI -скрипты.

    Среда исполнения сервлетов, кроме того, обеспечивает некоторые полезные и экономящие время возможности, включая преобразование HTTP-запросов из сети в удобный для использования HttpServletRequest объект, обеспечивая выходной поток для программиста, чтобы использовать его для ответа, и преобразование удобного в работе объекта HttpServletResponse в HTTP-ответ,который может быть послан обратно по сети. Она также обеспечивает удобные возможности управления сессиями, в том числе хранения состояния сессии, что позволяет, например, назначать ресурсы (такие как подключения к базе данных), которые могут использоваться для многократных запросов.

    По сравнению с апплетами сервлеты имеют преимущества с архитектурной точки зрения. Если апплет, посланный по сети, окажется в несовместимой с ним виртуальной машине Java,то он, скорее всего, корректно работать не будет. Сервлет развертывается в более управляемой среде. Так как параметры JVM известны, проблем совместимости не возникает. Более того, среда, которая окружает данную виртуальную машину, может увеличивать производительность сервлета. Некоторые серверы Java -приложений могут компилировать сервлеты в "родной" для себя код и тем самым значительно увеличивать скорость выполнения. Другие серверы запускают параллельно несколько JVM,иногда в различных процессах хостовой ОС. Эти стратегии увеличивают масштабируемость и отказоустойчивость службы.

    Вариантом сервлета является JSP -страница (Java Server Pages). JSP -страница, подобно ASP или PHP скрипту представляет собой обычный HTML файл с записанным внутри него при помощи специального синтаксиса исходным Java -кодом сервлета. Каждая JSP -страница автоматически преобразуется в сервлет Web -сервером при запросе на эту страницу со стороны клиента. Затем сервлет выполняется по описанной схеме. Подытоживая, можно сказать, что сервлеты имеют преимущество максимальной переносимости: они могут работать на большем количестве Web -серверов или серверов приложений и на большем количестве платформ, чем любая другая технология динамических Web -приложений, доступная сегодня. Следует также отметить, что API сервлета намного проще в изучении и в использовании, чем технология EJB,поэтому и применяется пока что чаще (хотя EJB также уже стал фактически промышленной технологией).

    Заключение

    В современном развитии программных и аппаратных платформ прослеживаются две отчетливые тенденции:

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

    Вернуться к учебному плану