Архитектура Приложений JavaScript
Как уже говорилось, приложения JavaScript имею части, работающие на стороне клиента и на сервере. Кроме того, многие приложения JavaScript используют LiveWire Database Service для соединения приложения с реляционной базой данных. Исходя из этого, Вы можете представить приложения JavaScript как имеющие трёхслойную клиент-серверную архитектуру, как показано на .
Рисунок 2.1Архитектура среды клиент-серверного приложения на языке JavaScript
Три слоя - это:
-
WWW-клиенты (такие как Netscape Navigator-клиенты): Этот слой предоставляет приложению межплатформенный интерфейс конечного пользователя. Этот слой может также содержать некоторую логику приложения, такую как правила проверки данных, реализованные в клиентском JavaScript. Клиенты могут находиться внутри или за пределами прокси-сервера корпоративной сети.
-
Netscape WWW-сервер/БД клиент: Этот слой состоит из Netscape-сервера с включённым JavaScript. Он содержит логику приложения, обслуживает безопасность и контролирует доступ к приложению нескольких пользователей, используя серверный JavaScript. Этот слой позволяет клиентам как в пределах действия, так и за пределами прокси-сервера иметь доступ к приложению. WWW -сервер также работает как клиент с любым установленным сервером БД.
-
Серверы баз данных: Этот слой состоит из SQL-серверов БД, работающих обычно на высокопроизводительных рабочих станциях. Он содержит все данные БД, метаданные и правила ссылочной целостности/referential integrity, необходимые для работы приложения. Этот слой обычно находится в зоне действия прокси-сервера корпоративной сети и может предоставлять слой безопасности дополнительно к слою безопасности WWW -сервера. Netscape Enterprise Server поддерживает использование серверов БД: ODBC, DB2, Informix, Oracle и Sybase. Netscape FastTrack Server поддерживает только ODBC. Дополнительно о LiveWire Database Service см.
Клиентская среда JavaScript работает как часть WWW -клиентов, а серверная среда JavaScript работает как часть Netscape web-сервера с доступом к одному или более серверов БД. показывает более детально, как серверная среда JavaScript и приложения, созданные для неё, встраиваются в Netscape web-сервер.
Верхняя часть демонстрирует то, как серверный JavaScript встраивается в Netscape web-сервер. Внутри web-сервера среда работы серверного JavaScript состоит из трёх основных компонентов, перечисленных ниже. JavaScript Application Manager работает поверх серверного JavaScript, как это делается в образце приложения, предоставленном Netscape (таком как приложение videoapp), и в любом приложении, созданном Вами.
Рисунок 2.2 Серверный JavaScript в среде Netscape-сервера
Имеются три главных компонента среды работы JavaScript:
- Библиотека времени выполнения JavaScript: этот компонент предоставляет базовую функциональность JavaScript. Примером может служить Session Management Service, которая предоставляет предопределённые объекты для помощи в обслуживании Вашего приложения и совместного использования информации клиентом и сервером и несколькими приложениями. Служба Session Management Service описана в .
Библиотека LiveWire доступа к БД: Этот компонент расширяет базовую функциональность серверного JavaScript классами и объектами, которые предоставляют аналогичный доступ к внешним серверам БД. Это описано в
Виртуальная машина Java (ВМ): В отличие от других компонентов, ВМ Java используется не только в JavaScript; любое Java-приложение, запущенное на сервере, использует эту ВМ. ВМ Java была доработана для того, чтобы дать приложениям JavaScript возможность получать доступ к Java-классам через использование LiveConnect -функциональности JavaScript. LiveConnect описана в
В целом приложение на JavaScript может содержать операторы, интерпретируемые клиентом (интерпретатором JavaScript, предоставляемым Netscape Navigator'ом или некоторыми другими web-браузерами) и сервером (машиной выполнения JavaScript, уже рассмотренной).
Когда вы запускаете приложение JavaScript, происходят различные действия: некоторые на сервере, и некоторые - на клиенте. Хотя конечному пользователю не обязательно знать все детали, Вам как разработчику приложения необходимо понимать, что происходит "под капотом."
При создании приложения Вы пишете HTML-страницы, которые могут содержать операторы серверного и клиентского JavaScript. В исходном коде HTML клиентский JavaScript находится в тэгах SCRIPT, а серверный JavaScript - в тэгах SERVER.
Вы можете также писать файлы, содержащие только операторы JavaScript без тэгов HTML. Такой JavaScript-файл может содержать либо клиентский, либо серверный JavaScript; один файл не может содержать и клиентские, и серверные объекты или функции.
JavaScript VM (Виртуальная Машина), используемая в Netscape Enterprise Server 4.0, реализует значительные улучшения для обработки локальных переменных (то есть переменных, которые объявлены внутри функции), по сравнению с NES 3.6. Соответственно, рекомендуется минимизировать использование глобальных переменных (переменных между тэгами <server> и </server>) и переписать приложения для использования функций там, где это возможно. Это значительно повысит производительность приложения.
Если файлы HTML и JavaScript содержат серверный JavaScript, Вы затем компилируете их в единый исполняемый файл приложения JavaScript. Этот файл называется web-файлом и имеет расширение .web. Компилятор приложений JavaScript развёртывает HTML-код в платформонезависимые байт-коды, разбирая и компилируя операторы серверного JavaScript.
Наконец, Вы публикуете Ваше приложение на Вашем web-сервере и используете JavaScript Application Manager для инсталяции и запуска приложения, чтобы пользователи могли получить к нему доступ.
На этапе прогона, когда клиент запрашивает страницу приложения серверного JavaScript, машина выполнения локализует представление этого файла в web-файле приложения. Она запускает весь найденный серверный код и создаёт HTML-страницу для отправки клиенту. Эта страница может содержать как обычные тэги HTML, так и операторы клиентского JavaScript. Весь серверный код запускается на сервере до отправки страницы клиенту и до выполнения любого HTML или клиентского JavaScript. Соответственно, Ваш серверный код не может использовать клиентские объекты, так же как и клиентский код не может использовать серверные объекты.
Дополнительно см.