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

Клиентские технологии

Представление и отображение данных должно осуществляться в соответствии с определенным набором правил, в качестве которого используют html (Hypertext Markup Language). Html по сути не является языком программирования, поскольку не выполняет никаких функций по обработке материала, только по его оформлению и представлению. Теги этого метаязыка помогают получать в окне браузера информацию именно в том виде, в каком желает вебмастер. Отметим, что гипертекст разработан в 1989 году и изначально создавался с целью обмена различной документацией, позволяя браузерам отличать, например, заголовки и подзаголовки от рисунков и текста.

Интернет технологии развивались, html радикально изменился, с учетом новых возможностей появился "усовершенствованный" xhtml (Extensible Hypertext Markup Language) - язык расширенной разметки гипертекста для веб страниц, по возможностям сопоставимый с html и созданный на базе xml.

Разметка страниц со временем усложнилась, и ее стало трудно поддерживать. В связи с этим потребовалось отделить структуру документа от его визуального представления; появились каскадные таблицы стилей (Cascading Style Sheets - CSS). Впервые таблицы стилей в качестве рекомендаций W3C приняты в 1996 году и с тех пор широко используются для верстки сайтов. CSS верстка веб сайтов позволяет, например, одинаково оформить множество элементов, исправив всего одну строку в таблице стилей.

Конечно, оптимальные результаты верстки web сайта могут быть получены только путем умелого сочетания html-кода и каскадной таблицы стилей.

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

JavaScript - это облегченный, интерпретируемый язык программирования с объектно-ориентированными возможностями. Универсальное ядро языка встроено в различные веб-браузеры. Клиентская версия JavaScript позволяет включать в веб-страницы исполняемое содержимое, то есть web страница не обязаны быть статическим html-кодом, а может включать в себя программы, взаимодействующие с пользователем, управляющие браузером и динамически создающие html.

JavaScript развивался много лет, в течение которых выпущено несколько версий этого языка. Например, Microsoft издала версии под именем Jscript. В свою очередь ассоциация Ecma, деятельность которой посвящена стандартизации информационных и коммуникационных технологий, опубликовала три версии, стандартизирующие JavaScript под названием EcmaScript. Последняя и определила стандартную версию базового языка JavaScript, а World Wide Web Consortiums опубликовала рекомендацию DOM, отражающую возможности браузеров по поддержке объектной модели.

Web - браузеры позволяют просматривать страницы сети Интернет.

Как показывает практика, различные браузеры показывают конкретную страницу по-разному. Отображение страниц зависит от работы алгоритмов коррекции, встроенных в браузер, а в разных браузерах эти алгоритмы различны. Internet Explorer и Netscape Navigator, работая под Windows, отображают страницы примерно одинаково, с различиями лишь в таких деталях, как поля и отступы. Однако другие браузеры могут серьезно исказить некоторые страницы. Разработчики с каждой новой версией совершенствуют свои продукты, поэтому чем новее версия браузера, тем меньше он искажает.

Серверные технологии

В области программирования для сети Интернет PHP - один из популярных скриптовых языков (наряду с JSP, Perl и языками, используемыми в ASP.NET) благодаря своей простоте, скорости выполнения, богатой функциональности, кроссплатформенности и распространению исходных кодов на основе лицензии PHP.

Perl - высокоуровневый интерпретируемый динамический язык программирования общего назначения, созданный Ларри Уоллом, лингвистом по образованию. Основной особенностью языка считаются его богатые возможности для работы с текстом, в том числе работа с регулярными выражениями, встроенная в синтаксис. Перл унаследовал много свойств от языков Си, AWK, скриптовых языков командных оболочек UNIX.

JSP - одна из высокопроизводительных технологий, так как весь код страницы транслируется в java-код сервлета с помощью компилятора JSP страниц Jasper, и затем компилируется в байт-код виртуальной машины java (JVM). Контейнеры сервлетов, способные исполнять JSP страницы, написаны на языке Java, который может работать на различных платформах. JSP страницы загружаются на сервере и управляются из структуры специального Java server packet, который называется Java EE Web Application, в большинстве своём упакованные в файловые архивы.war и.ear. Выгода, которую дает технология JSP в сравнении с другими веб-технологиями заключается в том, что JSP является платформонезависимой, переносимой и легко расширяемой технологией для разработки веб-приложений.

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

ASP.NET не является платформой.

IIS - проприетарный набор серверов для нескольких служб Интернета от компании Майкрософт. IIS распространяется с операционными системами семейства Windows NT.

Основным компонентом IIS является веб-сервер, который позволяет размещать в Интернете сайты. IIS поддерживает протоколы HTTP, HTTPS, FTP, POP3, SMTP, NNTP.

БД, работающие по технологии ФАЙЛ-СЕРВЕР;

БД, работающие по технологии КЛИЕНТ-СЕРВЕР.

Файл-сервер


- Обращение к БД (запрос)
- Перекачка данных с блокировкой доступа других пользователей
- Обработка данных на компьютере пользователя

Для наглядности рассмотрим конкретные примеры. Допустим, Вам необходимо просмотреть отправленные платежные поручения за период с 19 по 25 мая на сумму 5000 рублей. Пользователю необходимо будет запустить на своем компьютере клиентское приложение, работающее в БД с платежными поручениями, и ввести нужные критерии отбора. После чего на Ваш компьютер перекачается с сервера базы данных и загрузится в оперативную память файл, содержащий все документы данного вида за весь период на любые суммы. Запущенное на компьютере пользователя клиентское приложение, работающее с БД, само проведет обработку этой информации (отсортирует их), после чего выдаст ответ (на экране появится список платежных поручений, удовлетворяющих Вашим критериям). После этого Вы выберете нужное платежное поручение и попытаетесь отредактировать (изменить) в нем одно поле - например, дату. Во время редактирования происходит блокировка источника данных, то есть всего файла, содержащего этот документ. Это означает, что файл будет либо совсем не доступен остальным пользователям, либо доступен только в режиме просмотра. Причем подобного рода захват происходит даже не на уровне записи, то есть одного документа, а заблокированным является целый файл - то есть вся таблица, содержащая аналогичные документы. Только после полной обработки этого поля и выхода из режима редактирования данный файл платежных поручений будет разблокирован от захвата пользователем. Если же данные хранятся в более объемных объектах, например, в одном файле содержатся платежные поручения и о поступлении средств, и об отправке, то еще большая часть информации будет не доступна. Вы будете работать с одним полем "дата" в одном документе - остальные сотрудники предприятия будут ждать, пока Вы не закончите.

Недостатки ФАЙЛ-СЕРВЕРНОЙ системы очевидны:

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

    Обработка данных осуществляется на компьютере пользователей. Это влечет повышенные требования к аппаратному обеспечению каждого пользователя. Чем больше пользователей, тем больше денег придется потратить на оснащение их компьютеров.

    Блокировка данных при редактировании одним пользователем делает невозможной работу с этими данными других пользователей.

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

    Клиент-сервер

    Обработка запроса одного пользователя:
    - Обращение к БД (SQL-запрос)
    - Передача ответа - результата обработки


    При необходимости произвести обработку информации, хранящейся в БД, запущенное на компьютере пользователя клиентское приложение, работающее с БД, формирует запрос на языке SQL (название от начальных букв - Structured Query Language). Сервер базы данных принимает запрос и обрабатывает его самостоятельно. Никакой массив данных (файл) по сети не передается. После обработки запроса на компьютер пользователя передается только результат - то есть, в предыдущем примере, - список платежных поручений, удовлетворяющих нужным критериям. Сам же файл, в котором хранились данные, послужившие источником для обработки, остается незаблокированным для доступа самого сервера по запросам других пользователей.

    В серьезных клиент-серверных СУБД существуют дополнительные механизмы, снижающие нагрузку на сеть, снижающие требования к пользовательским компьютерам. В качестве примера приведем хранимые процедуры - то есть целые программы обработки данных, хранящихся в БД. В этом случае от пользователя к серверу не передается даже SQL выражения - передается вызов функции с параметрами вызова. Таким образом, рабочее место пользователя еще сильнее упрощается, логика работы программы переносится на сервер. Пользовательское место становится всего лишь средством отображения информации. Все это означает дальнейшее снижение нагрузки на сеть и пользовательские рабочие станции.

    Таким образом, все вышеперечисленные недостатки ФАЙЛ-СЕРВЕРНОЙ схемы устраняются в архитектуре КЛИЕНТ-СЕРВЕР:

      Массивы данных не перекачиваются по сети от сервера БД на компьютер пользователя. Требования к пропускной способности сети понижаются. Это делает возможным одновременную работу большого числа пользователей с большими объемами данных.

      Обработка данных осуществляется на сервере БД, а не в компьютере пользователей. Что позволяет использовать более простые, а значит, дешевые компьютеры на клиентских местах.

      Блокировки (захвата) данных одним пользователем не происходит.

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

      Рассмотрев отличие ФАЙЛ-СЕРВЕРА от КЛИЕНТ-СЕРВЕРА, можно завершить рассмотрение понятия "хранилище информации". Важно подчеркнуть, что от вида используемой СУБД во многом зависит работа корпоративной системы. Совершенно очевидно, что для крупных предприятий, с большим количеством пользователей, с огромным числом записей в БД, файл-серверная схема совершенно неприемлема. С другой стороны, отличия в базах данных есть и по другим параметрам и возможностям:

        типам данных, которые могут храниться в БД (числа, даты, текст, рисунки, видео, звук и т.д);

        по организуемым самой БД технологиям доступа к данным в базе и уровню защиты информации от несанкционированного доступа;

        по предоставляемым средствам и методикам разработки, которые могут быть применены для проектирования какой-либо информационной системы на основе данной БД;

        по предоставляемым средствам и методикам анализа информации (данных), которые могут быть применены в информационной системы на основе данной БД;

        по надежности и устойчивости, то есть (грубо) количеству записей (заполненных полей) в БД, при которых обеспечивается надежная и бесперебойная возможность доступа, изменения, анализа информации в БД;

        по быстродействию - времени, затраченному на доступ и обработку информации;

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

        по уровню поддержки (сервиса), предоставляемого разработчиком базы данных или его авторизованным дилером;

        по наличию хороших средств создания приложений, использующих данную базу данных и т.д.

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

Web-сервер - это совокупность аппаратно-программных средств, которая принимает HTTP-запросы от клиентов (как правило, web- браузеров) и выдает HTTP-ответы. В простом случае ответ web- сервера - это содержание расположенных на нем файлов: документов, изображений, фильмов и так далее. Такие данные называют статическими: если пользователь запросит несколько раз информацию по одному и тому же адресу, web-сервер выдаст в точности одно и то же содержимое. Для динамического подхода, то есть когда выдаваемая информация будет меняться во времени и/или зависеть от параметров запроса, одного web-сервера недостаточно. В этом случае web-сервер служит переходным звеном между клиентом и некой программной средой, формирующей содержимое HTML-страницы. И здесь напрашивается вопрос: а зачем тогда нужен web-сервер, если динамическую страницу все равно формирует приложение.

При небольшой нагрузке на приложение - несколько одновременно подключенных пользователей (единицы) -web-сервер не является абсолютно необходимым звеном. Практически все существующие на сегодняшний день пакеты разработки web-приложений имеет в своем составе легковесный web-сервер. Достаточно запустить среду разработки на выполнение, и к ней можно подсоединиться браузером и работать с ней по протоколу HTTP.

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

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

Все современные (полновесные ) web-серверы используют асинхронную обработку поступающих от клиентов запросов. То есть после получения запроса от клиента сервер переадресует этот запрос потоку обработчика (worker). Сам сервер при этом продолжает принимать запросы от клиентов и переадресовывать их обработчикам. Существует несколько стратегий работы с обработчиками.

  • - Количество worker может быть жестко задано. При старте сервера запускается, например, 10 потоков. При получении 11-го запроса сервер выдаст клиенту ответ временно недоступен.
  • - Worker могут порождаться сервером динамически в зависимости от загрузки. При этом оговаривается начальное число worker, максимально допустимое количество, минимальное и максимальное количество свободных worker.
  • - Worker может быть как процессом, так и потоком. Различные процессы не взаимодействуют между собой и не могут разделять данные. В отличие от процессов, потоки имеют общее разделяемое пространство данных и могут обмениваться информацией между собой.
  • - Worker-процессы могут запускаться как внутри родительского серверного процесса, так и снаружи. При последнем варианте worker могут быть распределены по разным компьютерам.
  • - Worker - вне родительского сервера могут представлять собой непосредственно процессы среды web-приложения.
  • - Сервер может отслеживать разные варианты распределения нагрузки между порожденными worker: равномерную или поочередную загрузку.

Комбинируя эти факторы, можно попытаться добиться наилучшей производительности системы в целом.

Для логического разделения, оптимального распределения нагрузки по вычислительным мощностям Worker могут запускаться и на другом (-их) компьютере (-ах), не обязательно на том же самом, где расположен сам принимающий запросы от клиентов сервер. В этом случае общение между сервером и worker происходит по определенному сетевому протоколу. Это уже не может быть HTTP, потому что вместе с полученным запросом worker передается расширенная информация об окружении сервера. В частности, в качестве такого протокола общения может применяться FastCGI.

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

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

Файл-серверная технология;

Технология клиент-сервер.

Файл-серверная технология – это работа в сетевом пространстве с доступом к файлам СУБД, хранящимся на сервере.

Обработка запроса одного пользователя:

· Обращение к БД (запрос)

· Перекачка данных с блокировкой доступа других пользователей

· Обработка данных на компьютере пользователя

В файл-серверной организации клиент работает с удаленными файлами, что вызывает существенную перегрузку трафика (поскольку СУБД-ФС работает на стороне клиента, то для выборки полезных данных в общем случае необходимо просмотреть на стороне клиента весь соответствующий файл целиком).

В целом, в файл-серверной архитектуре мы имеем "толстого" клиента и очень "тонкий" сервер в том смысле, что почти вся работа выполняется на стороне клиента, а от сервера требуется только достаточная емкость дисковой памяти.

Недостатки файл-серверной системы очевидны:

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

· Обработка данных осуществляется на компьютере пользователей. Это влечет повышенные требования к аппаратному обеспечению каждого пользователя. Чем больше пользователей, тем больше денег придется потратить на оснащение их компьютеров.

· Блокировка данных при редактировании одним пользователем делает невозможной работу с этими данными других пользователей.

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

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

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

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

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

В серьезных клиент-серверных СУБД существуют дополнительные механизмы, снижающие нагрузку на сеть, снижающие требования к пользовательским компьютерам. В качестве примера приведем хранимые процедуры - то есть целые программы обработки данных, хранящихся в БД. В этом случае от пользователя к серверу не передается даже SQL выражения - передается вызов функции с параметрами вызова. Таким образом, рабочее место пользователя еще сильнее упрощается, логика работы программы переносится на сервер. Пользовательское место становится всего лишь средством отображения информации. Все это означает дальнейшее снижение нагрузки на сеть и пользовательские рабочие станции.

Таким образом, все вышеперечисленные недостатки файл-серверной схемы устраняются в архитектуре клиент-сервер :

  • Массивы данных не перекачиваются по сети от сервера БД на компьютер пользователя. Требования к пропускной способности сети понижаются. Это делает возможным одновременную работу большого числа пользователей с большими объемами данных.
  • Обработка данных осуществляется на сервере БД, а не в компьютере пользователей. Что позволяет использовать более простые, а значит, дешевые компьютеры на клиентских местах.
  • Блокировки (захвата) данных одним пользователем не происходит.
  • Обеспечивается доступ пользователя не к целому файлу, а только к тем данным из него, с которыми пользователь имеет право работать.

Настоящая статья адресована как начинающим разработчикам, так и опытным пользователям Интернета. Ее цель — осветить некоторые современные Интернет-технологии, включая те, что появились за последние два-три года.

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

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

Клиентские технологии

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

Клиентские технологии применяются главным образом для повышения интерактивности приложений, например для проверки корректности вводимых данных без дополнительного обращения к серверу, и для создания удобного пользовательского интерфейса. Так, современные веб-браузеры и некоторые почтовые клиенты способны интерпретировать код на скриптовых языках, выполнять Java-аплеты и элементы управления ActiveX, использовать другие дополнения, такие как Macromedia Flash Player, средства просмотра презентаций QuickTime, средства воспроизведения мультимедиаданных.

Код, интерпретируемый браузером

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

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

Java-аплеты

Практически все современные браузеры способны отображать и выполнять Java-аплеты — специальные Java-приложения, ссылка на которые внедряется в веб-страницу. Аплеты могут выполняться на всех платформах, для которых существуют виртуальные Java-машины. Способы взаимодействия аплетов с компьютером-клиентом также ограничены — например им недоступны его файловая система и приложения, а сетевой доступ из аплета возможен только к тому компьютеру, с которого он был загружен. Однако аплетом можно управлять, задавая в тексте содержащей его HTML-страницы или в коде на скриптовых языках той же страницы его параметры (например, цвет, шрифт и т.д.).

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

Элементы управления ActiveX

Некоторые из современных браузеров (в частности, Microsoft Internet Explorer) могут служить контейнерами для элементов управления ActiveX — специальных COM-серверов, выполняющихся в адресном пространстве браузера. Ссылки на такие элементы управления могут содержаться в составе веб-страницы. Сами элементы управления ActiveX представляют собой динамически загружаемые библиотеки, выполняющиеся в адресном пространстве браузера.

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

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

Отметим, что сегодня элементы управления ActiveX применяются главным образом в интрасетях, а не на общедоступных веб-сайтах.

Приложения Macromedia Flash

Еще одна очень популярная веб-технология, основанная на выполнении кода в клиентском приложении, — приложения Macromedia Flash. Macromedia Flash Player, как и виртуальная Java-машина, обладает ограниченными возможностями с точки зрения доступа к ресурсам клиентского компьютера. Так, приложения Flash не имеют доступа к файловой системе, за исключением служебного каталога Macromedia Flash Player, а доступ к внешним устройствам ограничивается микрофонами и видеокамерами. Доступ к сетевым ресурсам ограничивается доменом, с которого было получено данное приложение. Отметим, что, так же как и Java-аплеты и элементы управления ActiveX, приложения Flash могут управляться с помощью кода JavaScript, присутствующего на той же странице. Поскольку Macromedia Flash Player для Microsoft Internet Explorer сам по себе является элементом управления ActiveX, он использует некоторые возможности элементов управления ActiveX для доступа к свойствам приложений Flash из скриптовых языков.

Имеется и ряд других средств, реализованных обычно в виде так называемых модулей расширения (plug-in), представляющих собой исполняемый код. При этом современные браузеры обладают средствами ограничения возможностей, связанных с их загрузкой и выполнением.

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

Серверные технологии

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

Скрипты и исполняемые файлы

Одной из первых технологий создания веб-приложений, выполняющихся на серверах, была Common Gateway Interface (CGI). Она позволяла создавать и выполнять серверные приложения, обращение к которым происходит посредством указания их имени (а иногда — и параметров) в URL. Входной информацией для таких приложений служит содержимое HTTP-заголовка либо тело запроса, в зависимости от применяемого протокола. CGI-приложения — это консольные приложения, которые генерируют HTML-код, передаваемый браузеру. Подобные приложения могут представлять собой код на скриптовых языках, интерпретируемый на сервере, либо исполняемый файл, который можно создать с помощью практически любого средства разработки, генерирующего консольные приложения для операционной системы, под управлением которой функционирует веб-сервер.

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

Библиотеки, загружаемые в адресное пространство веб-сервера

Проблему ограниченной производительности веб-приложений, которые выполняются в отдельном адресном пространстве, можно решить, создав приложение в виде библиотеки, загружающейся в адресное пространство веб-сервера и при необходимости остающейся там для обработки последующих запросов от других клиентов (понятно, что в этом случае веб-сервер должен поддерживать загрузку таких библиотек). Подобные приложения для Microsoft Internet Information Servise носят название ISAPI (Internet Server Application Program Interface), а такие библиотеки для весьма популярного веб-сервера Apache называются Apache DSO (Dynamic Shared Objects). Означенные технологии существуют уже довольно продолжительное время, но все еще весьма популярны.

Веб-приложения, основанные на применении библиотек, загружаемых в адресное пространство веб-сервера

Заметим, что при создании как CGI-, так и ISAPI-приложений довольно сложно отделить задачи дизайна от задач, связанных с реализацией функциональности и логики приложений, — подобные приложения генерируют веб-страницы целиком.

Веб-страницы с фрагментами серверного кода

ASP и ASP .NET

Очередным шагом в развитии технологий создания Интернет-приложений стало появление средств, позволяющих отделить задачи веб-дизайна от задач, связанных с реализацией функциональности приложений. Первой подобной технологией стала Active Server Pages (ASP). Основная идея ASP заключается в создании веб-страниц с внедренными в них фрагментами кода на скриптовых языках. Однако, в отличие от рассмотренных выше средств применения скриптовых языков для расширения функциональности браузеров, указанные фрагменты кода интерпретируются не браузером, а предназначенной для этого ISAPI-библиотекой, входящей в состав Internet Information Server. Внедренный фрагмент кода замещается результатом его выполнения, а полученная таким образом динамическая страница передается в пользовательский браузер.

Одной из наиболее популярных сегодня технологий, реализующих идею создания веб-страниц с фрагментами кода, является ASP .NET — ключевая в архитектуре Microsoft .NET Framework. Основное отличие этой технологии от ASP в плане архитектуры приложений заключается в том, что код, присутствующий на веб-странице, не интерпретируется, а компилируется и кэшируется, что способствует повышению производительности приложений. Кроме того, указанная технология позволяет создавать так называемые серверные компоненты, возвращающие в браузер HTML-код с интерпретируемыми браузером фрагментами кода на скриптовых языках и способные предоставить более удобный пользовательский интерфейс, нежели обычный HTML-код. Важными особенностями серверных компонентов ASP .NET являются возможность обработки на сервере событий, возникающих в клиентском приложении, и возможность генерировать HTML-, WML- и CHTML-код в зависимости от типа клиента и поддерживаемых им языков разметки и протоколов передачи данных.

Технология ASP .NET 2.0, представляющая собой дальнейшее развитие технологии ASP .NET, станет доступной разработчикам в течение этого года. С ее помощью разработчики получат доступ к расширенному набору готовых блоков, шаблонов страниц, прикладных интерфейсов, средств упрощения настройки внешнего вида приложений, а также к средствам персонализации, к инструментам для поддержки локализации приложений, к утилитам развертывания, позволяющим распространять приложения без предоставления исходного кода, и к компонентам для создания порталов, доступа к защищенной информации, для удобного отображения данных, что позволит создавать веб-приложения, близкие в плане удобства и пользовательского интерфейса к Windows-приложениям.

Java Server Pages

Наряду с ASP и ASP .NET существуют и другие технологии, реализующие идею размещения внутри веб-страницы кода, выполняемого веб-сервером. Наиболее известной из них сегодня является технология JSP (Java Server Pages), основная идея которой — однократная компиляция Java-кода (сервлета) при первом обращении к нему, выполнение методов этого сервлета и помещение результатов выполнения этих методов в набор данных, отправляемых в браузер.

Веб-приложения, основанные на применении веб-страниц с внедренными в них фрагментами серверного кода

Говоря о технологии JSP, нельзя не отметить относительно новую спецификацию Sun под названием Java Server Faces. Эта спецификация описывает правила создания веб-приложений с удобным пользовательским интерфейсом (схожим по функциональности с интерфейсом Windows-приложений) и разработки серверных компонентов, реализующих подобный интерфейс. Средства разработки Java-приложений, поддерживающие указанную спецификацию, в идеале должны позволить создавать веб-приложения, основанные на J2EE, примерно с той же скоростью и степенью удобства, что и средства разработки.NET-приложений.

Из других популярных технологий, реализующих создание веб-страниц с фрагментами кода, выполняемого на сервере, отметим PHP (Personal Home Pages). Данная технология основана на применении CGI-приложений, интерпретирующих внедренный в HTML-страницу код на скриптовом языке. Несмотря на наличие недостатков, присущих всем CGI-приложениям, PHP пользуется немалой популярностью благодаря простоте разработки и доступности для различных платформ, особенно при создании приложений, не отличающихся высокими требованиями к масштабируемости и надежности.

Применение инфраструктурного ПО общего назначения

Чем выше посещаемость сайта и больше объем обрабатываемых им данных, тем более строгими будут требования к производительности и масштабируемости веб-приложений. Чем более серьезные задачи решаются с помощью веб-приложения, тем выше требования к его надежности и безопасности. Чаще всего для удовлетворения этих требований бизнес-логика, реализованная в веб-приложении, а также службы обработки данных и реализации транзакций отделяются от пользовательского интерфейса приложений и реализуются в виде отдельных приложений, библиотек, сервлетов, которые в общем случае называются бизнес-объектами. Сегодня в подавляющем большинстве современных корпоративных решений применяются либо серверы, поддерживающие спецификацию Java2 Enterprise Edition, либо серверы, базирующиеся на применении служб серверных версий Windows, технологиях COM и Microsoft .NET.

Бизнес-объекты могут обладать различной функциональностью. Как правило, они предоставляют доступ к данным, управляемым какой-либо серверной СУБД, нередко — доступ к данным корпоративных информационных систем. Довольно часто бизнес-объекты реализуют какую-либо часть корпоративной информационной системы, создание которой изначально предполагало включение внешнего веб-сервера в качестве составной части корпоративной информационной системы (например, в качестве одного из источников данных для CRM-приложения). Готовые CRM- и ERP-системы ведущих производителей, таких как SAP, PeopleSoft, Siebel, обычно содержат в своем составе подобные бизнес-объекты, а зачастую — и обращающиеся к ним готовые веб-приложения, например порталы для клиентов и удаленных пользователей, приложения для осуществления электронной коммерции и иные приложения.

Веб-службы

информационным системам многих предприятий уже не один десяток лет. А поскольку предприятия нередко начинали свое развитие со стихийной автоматизации отдельных видов деятельности, то сегодня многие из них сталкиваются с проблемой интеграции приложений, создававшихся в разные годы для разных платформ. Одним из средств подобной интеграции является технология веб-служб, использующая для обмена данными стандартный протокол HTTP. Создавать веб-службы можно и в виде исполняемых файлов, и в виде библиотек, и в виде интерпретируемого кода; существуют также средства представления бизнес-объектов, основанных на различных технологиях, в виде веб-служб (эту технологию сегодня поддерживают все ведущие производители офисных продуктов), средств разработки, СУБД, серверов приложений и операционных систем. Методы веб-служб можно вызывать из обычных приложений, веб-приложений, других веб-служб. В последнее время наблюдается массовое появление приложений, использующих веб-службы, в том числе предназначенных для конечных пользователей (к таким приложениям, например, относятся приложения семейства Microsoft Office System, позволяющие при помощи веб-служб пользоваться данными словарей, энциклопедий, систем онлайнового перевода, служб онлайнового заказа товаров, — см., например, статью «Интернет и офисные приложения», № 10’2004).

Похожие публикации