Сетевое программирование - это запутанная “паутина”
Технический обзор
Компоненты согласуются легко, однако стандарт пока не выработан
Сравнительно недавно разработчики увлеклись программированием на базе компонентов, при котором повторяющиеся элементы помещаются в своего рода программные “контейнеры”. Однако уже сейчас такая технология наносит некоторый ущерб World Wide Web.
В Internet в качестве контейнеров проще всего использовать Web-браузеры, но здесь возникают проблемы. Чтобы компонентная технология могла работать в Сети, одних компонентов недостаточно, нужно уметь их совместно использовать. К сожалению, ни в одной из этих областей до сих пор не выработаны четкие стандарты.
Главное сражение вокруг компонентов разворачивается между языком программирования Java фирмы Sun Microsystems и технологией ActiveX корпорации Microsoft. Первый может использоваться совместно с браузером Navigator корпорации Netscape Communications, установленным на любой платформе, а также с Internet Explorer в среде Windows 95. Его соперник делает ставку на разработанные ранее технологии OLE, а это - основа прочная. В схватку ввязалась и корпорация Netscape, ранее занимавшая нейтральную позицию. Она отказалась от применения в браузере Navigator включаемых расширений и вместо них обратилась к помощи JavaScript- и Java-приложений.
Что касается распределения компонентов по сети, то здесь столкнулись модель DCOM (Distributed Component Object Model - модель распределенных компонентных объектов) корпорации Microsoft и стандарт CORBA (Common Object Request Broker Architecture - общая архитектура посредника запросов к объектам), предложенный консорциумом Object Management Group.
С конца 1994 г. Netscape всячески стремится повысить функциональность своих Web-браузеров. С этой целью она сначала использовала встроенные расширения и ПО, специализированное под конкретные типы браузеров и файлов, что позволило отображать или проигрывать “чужие” файлы, ссылки на которые содержатся в коде HTML. Расширения могли быть написаны на любом языке программирования с последующей трансляцией под используемую платформу. Они позволяли разработчикам содержания просматривать примерную компоновку Web-страниц - в каком месте появляются вводимые ими данные и как они сочетаются с другими текстовыми и графическими элементами формата HTML, размещенными рядом.
Кроме того, расширения повышали уровень интерактивности WWW, однако часто возникали проблемы с их инсталлированием. С особыми трудностями сталкивались рядовые, не имеющие технической подготовки пользователи, на чьих компьютерах отсутствовали новейшие файлы, способные упростить этот процесс.
Каждое из расширений позволяло выполнять какую-либо одну функцию для конкретного типа файлов и могло взаимодействовать только с браузером. По этим и другим причинам данная технология вынуждена была уступить место Java и ActiveX, обладающим необходимым потенциалом для существенного расширения возможностей работы в Web.
Так, система Shockwave фирмы Macromedia сейчас представлена в двух вариантах - как расширение и как элемент управления ActiveX. Если для подключения к Web-узлу с установленным на нем ActiveX Shockwave используется Internet Explorer, то элементы управления загружаются и инсталлируются автоматически.
Элементы управления ActiveX (ранее они назывались заказными элементами управления OLE) представляют собой автономные (self-contained) компоненты, запускаемые изнутри своеобразного контейнера. Они выполнены в двоичном коде, поэтому, как и расширения, их приходится транслировать для каждой платформы, на которой они будут использоваться. Microsoft обещает, что к концу года технология ActiveX станет доступна в средах Macintosh и Unix. Этого предполагается достичь главным образом усилиями независимых разработчиков, однако пока еще ничего конкретного в данном направлении не сделано.
Одна из наиболее привлекательных особенностей ActiveX состоит в полной совместимости этой технологии с имеющимися приложениями, поддерживающими OLE. Элементы управления ActiveX после загрузки в Internet Explorer 3.0 могут совместно использоваться всеми прикладными программами, способными работать с OLE-объектами.
ActiveX Documents корпорации Microsoft (прежнее название - DocObjects) представляет собой технологию запуска приложений, позволяющую создавать контейнеры простым щелчком мыши. Это дает пользователям возможность просматривать и обрабатывать многие типы файлов непосредственно из Internet Explorer. Данная технология найдет применение в следующей версии браузера Microsoft. Она обеспечит работу пользователей с локальными и сетевыми данными посредством “системно-сетевого браузера” (system/network browser) и усилит интеграцию данных, размещенных в Internet, с другими приложениями.
О наличии локальных и загруженных элементов управления ActiveX, равно как и об их свойствах, пользователь узнает посредством “системного реестра” Windows. Допускается ссылка на них в сценариях VBScript, например, по их идентификаторам класса (Class ID). Системный реестр предлагает более гибкую модель хранения и маркировки, чем приложения стандарта MIME (Multipurpose Internet Multimedia Extensions - многоцелевые расширения почты в Internet). Превосходит он и возможности строки типа, используемой в Navigator для выбора приложений, запускаемых для работы с тем или иным типом загружаемого документа. Но реестр работоспособен лишь в среде Windows, тогда как MIME представляет собой кросс-платформную систему.
Снять остроту многих проблем, связанных с расширениями, призван язык Java фирмы Sun, который к тому же повышает уровень интерактивности работы в Web. Весьма заманчиво выглядят такие особенности Java, как подстройка функциональности под предъявляемые требования и загрузка приложений в формате, не зависящем от платформы. Но за эти удобства приходится расплачиваться - существующие интерпретаторы Java работают крайне медленно. В какой-то степени избавиться от этого недостатка призваны компиляторы JIT (Just-in-Time - “точно в срок”), которые Netscape собирается по одному включать в последующие версии своего браузера.
Но у Java-приложений есть еще одно слабое место - их приходится повторно загружать перед каждым запуском, так как они не сохраняются в памяти постоянно. Расширения же, напротив, достаточно загрузить один раз, после чего их можно запускать по мере необходимости.
Много раз уже писали о проблемах безопасности языка Java, но ActiveX в наследство от OLE досталась еще меньшая защищенность. В отличие от Java-приложений, эта технология позволяет выполнять арифметические операции над указателями и предоставляет полномасштабный доступ к интерфейсу прикладного программирования операционной системы. Чтобы воспрепятствовать появлению вирусов на базе ActiveX и порче кода, корпорация Microsoft выступила с инициативой идентификации программных продуктов.
В ее рамках разработчики должны получить возможность снабжать свои продукты для ActiveX электронной подписью. Она будет гарантировать целостность кода, хотя и не сможет помешать внесению в него изменений. (По некоторым данным, Netscape и Sun также ведут работы в области создания системы идентификации Java-приложений, однако какая-либо информация по этому проекту пока отсутствует.)
Конечно, принятый в ActiveX подход сможет повысить уровень доверия между пользователями и разработчиками, но он довольно уязвим для хакеров, и его не следует считать окончательным решением проблемы обеспечения безопасности кода.
Если в ближайшем будущем вам придется работать не только с Windows, но и с другими платформами, то лучше выбрать кросс-платформные средства Java. В то же время ActiveX, уходящий корнями в OLE, имеет долгую историю развития и поэтому более привлекателен для программистов и деловых пользователей, работающих исключительно в среде Windows.
И, наконец, если во главу угла ставится производительность, то предпочтение следует отдать ActiveX или расширениям Netscape. По этому параметру Java им уступает, и такое положение может сохраниться даже после появления Java-компиляторов JIT.
Распределенные компоненты
И ActiveX, и Java разрабатывались с прицелом на сетевое использование, однако для обеих технологий требуется структура попеременного обращения к компонентам, размещенным в различных местах сети. В этой области разработчику предлагается выбор из двух систем - DCOM и CORBA.
Microsoft уже приступила к преобразованию протоколов Network OLE в DCOM. Благодаря поддержке архитектуры COM (Component Object Model - модель составных объектов), новая модель способна работать как с Java-приложениями, так и с элементами управления ActiveX. Однако на сегодняшний день DCOM реализована только в Windows NT 4.0.
Фирма Software AG и корпорация Digital Equipment уже заключили соглашения на разработку модели DCOM для других операционных систем, включая Unix, но эта цель будет достигнута не ранее 1997 или 1998 г. Таким образом, в ближайшей перспективе DCOM можно будет использовать лишь в среде Windows, а это существенно снижает возможности слаженного функционирования архитектуры ActiveX-DCOM, предлагаемой корпорацией Microsoft.
Java-приложения являются кросс-платформными “от рождения”, однако и для них структура распределения пока не установлена. Формально фирма Sun поддерживает CORBA, в этом плане ею ведется разработка двух продуктов - JavaBeans и Joe.
Первый из них представляет собой набор интерфейсов прикладного программирования, который должен обеспечить повторное использование загруженных Java-приложений и их совместное функционирование с другими компонентными моделями, такими, как OpenDoc и ActiveX. Корпорация Netscape уже включает интерфейсы JavaBeans в свою систему LiveConnect, а корпорация IBM приспосабливает JavaBeans для работы с OpenDoc (с этой целью ею создается утилита Arabica, бета-тестирование которой должно начаться в четвертом квартале). В то же время спецификации данного проекта в окончательном виде появятся только в 1997 г.
Joe представляет собой брокер запросов к объектам. Это программное средство должно обеспечить совместную работу в сети различных программ, каждая из которых решает собственную часть общей задачи. Joe сможет обеспечить доступ совместимых с Java приложений, таких, как Netscape Navigator, к любому корпоративному серверному приложению, поддерживающему CORBA. Это станет большим достоинством технологии, поскольку CORBA-продукты разрабатываются для многих сетей. Бета-версия Joe уже выпущена, вскоре должен появиться коммерческий вариант.
Из двух соперничающих технологий DCOM по всем статьям менее совершенна. Более зрелая CORBA уже была успешно воплощена в нескольких продуктах и проверена на практике. Как бы то ни было, разработка приложений только для DCOM или только для CORBA едва ли может рассматриваться как тупиковое направление.
Консорциум по технологии манипулирования объектами Object Management Group разрабатывает стандарт взаимодействия DCOM и CORBA, а также Internet-расширение IIOP (Internet InterORB Protocol), которое уже нашло поддержку в среде Open Network Environment корпорации Netscape. Протокол IIOP должен появиться в следующем году. Некоторые компании ведут разработку продуктов, поддерживающих оба протокола. Так, Web Request Broker корпорации Oracle вскоре сможет работать как с DCOM, так и с CORBA.
Дейв Козюр
Дейв Козюр - директор консультационной фирмы NetReality (Рестон, шт. Виргиния), специализирующейся в области вычислительных сетей. Связаться с ним можно через Internet по адресу: drkosiur@ix.netcom.com.
ПЛАТФОРМА ACTIVE INTERNET КОРПОРАЦИИ MICROSOFT
+-----------------------------------------------------------------------+
| Приложения |
+---------------+------------+-----------+-----------+------------------+
|Java-приложения| JavaScript | VB Script | HTML | Модули plug-in |
+---------------+------------+-----------+-----------+------------------+
|ActiveX, Java | Сценарии ActiveX | | |
| VM | | | |
+---------------+------------------------+-----------+------------------+
| Элементы управления ActiveX |
+-----------------------------------------------------------------------+
| Winter (HTTP, LDAP, SMTP и т. д.) |
| |
+-----------------------------------------------------------------------+
| Операционная система |
+-----------------------------------------------------------------------+
СРЕДА OPEN NETWORK ENVIRONMENT КОРПОРАЦИИ NETSCAPE
+---------------------------------------------------------------------+
| Приложения |
+----------------+---------------+-----------+------------------------+
|Java-приложения |JavaScript |JavaScript |Модули plug-in |
| +---------------+-----------+------------------------+
| | LiveConnect |
+----------------+----------------------------------------------------+
|Библиотека базовых классов Netscape Internet |
+---------------------------------------------------------------------+
|Среда поддержки исполнения Java - программ корпорации Netscape |
+---------------------------------------------------------------------+
|Поддержка открытых протоколов (HTTP, LDAP, IIOP, SMTP и т. д.) |
+---------------------------------------------------------------------+
|Netscape Navigator и SuiteSpot |
+---------------------------------------------------------------------+
|Операционные системы (Windows, Macintosh-системы, Unix) |
+-------------------------------+-------------------------------------+
|Локальные файлы |Сеть |
|и управление файлами | |
+-------------------------------+-------------------------------------+