
- •Планы – конспекты лекций
- •Раздел 1 основы технологии «клиент-сервер»
- •Тема 1.1 Основные принципы технологии «клиент-сервер»
- •Основы технологии «клиент-сервер».
- •Процесс-сервер, процесс-клиент.
- •Недостатки технологии клиент-сервер
- •Тема 1.2 Серверы приложений
- •Серверы приложений: типы, назначение, функции.
- •Тема 1.3 Web-сервис
- •Протоколы прикладного уровня: http, ftp, pop, imap.
- •Компоненты запроса клиента и ответа сервера.
- •File Transfer Protocol - протокол передачи файлов
- •Раздел 2 Языки гипертекстовой разметки
- •Тема 2.1 Развитие языков разметки гипертекста
- •Принципы гипертекстовой разметки.
- •Структура гипертекстовых документов.
- •Язык гипертекстовой разметки html.
- •Тема 2.2 Язык гипертекстовой разметки html
- •Основные теги
- •Теги оглавления
- •Атрибуты тела документа
- •Теги для форматирования текста
- •Гиперссылки
- •Форматирование
- •Графические элементы
- •Атрибуты таблицы
- •Формы Для форм, выполняющих какие-то функции должны быть запущены соответствующие cgi скрипты на сервере. Html только создает внешний интерфейс формы.
- •Тема 2.3 Расширяемый язык разметки xml
- •Характеристика и возможности расширяемого языка разметки xml.
- •Связывание данных xml c элементами html.
- •Как выглядит xml-документ?
- •Правила создания xml- документа
- •Конструкции языка
- •Элементы данных
- •Комментарии
- •Атрибуты
- •Cпециальные символы
- •Директивы анализатора
- •Раздел 3 Серверное программное обеспечение
- •Тема 3.1 Основы построения серверной части программного обеспечения
- •Основы разработки сетевых приложений.
- •Принципы построения серверной части программного обеспечения.
- •Основные задачи, выполняемые серверными программами.
- •Тема 2: Разработка программного обеспечения для сетей интернет.
- •Тема 3.2 Инструментальные средства создания приложений
- •Средства создания программ, выполняемых на стороне сервера.
- •Спецификация cgi (Common Gateway Interface).
- •Серверы asp.
- •Тема 3.3 Применение инструментальных средств создания приложений
- •Функциональные возможности ис.
- •Основы языка ис. Синтаксис языка ис.
- •Раздел 4 Клиентская часть приложения
- •Тема 4.1 Типовые задачи, решаемые клиентской частью
- •Характеристика типовых задач, решаемых клиентской частью приложений.
- •Функциональные возможности клиентской части.
- •Тема 4.2 Инструментальные средства создания клиентской части
- •Обзор инструментальных средств разработки программ, выполняющихся на стороне клиента. Их назначение и возможности.
- •Тема 4.3 Применение инструментальных средств создания клиентской части
- •Основы языка программирования.
- •Синтаксис языка. Операторы. Функции.
- •Методы и события. Динамические Web-страницы.
- •Литература
Средства создания программ, выполняемых на стороне сервера.
Спецификация cgi (Common Gateway Interface).
Серверы asp.
Основная идея динамической генерации web-страниц заключается в том, что большая часть НТМL-страницы не хранится в файле на сервере, а порождается непосредственно каждый раз при обращении клиента к серверу. Тогда сервер формирует страницу и сразу же по готовности передает ее клиенту. Таким образом всякий раз при новом обращении клиент получает новый текст НТМL и не исключено, что тексты могут значительно различаться между собой даже при обращении к одному и тому же серверу, вопрос только в том, как обеспечить динамическую генерацию НТМL-кода на стороне сервера.
Самое очевидное решение заключается в том, чтобы разработать некоторый исполняемый файл (приложение), который будет динамически строить новый НТМL-код, тогда на вход такого исполняемого файла поступают некоторые параметры, например, данные которые ввел в форме или в командной строке пользователь, а на выходе он должен порождать НТМL-код в виде текста, для этой цели служат приложения называемые CGI-приложениями.
CGI (общедоступный шлюзевый интерфейс) – это интерфейс для запуска внешних программ на сервере в ответ на действия клиента, установившего с ним соединение через глобальную сеть. Пользуясь этим интерфейсом, приложения могут получать информацию от удаленного пользователя, анализировать ее, формировать НТМL-код и отсылать его клиенту. CGI-приложения могут получать данные из заполненной формы, построенной с помощью НТМL либо из командной строки описания URL (универсальный указатель ресурса).
Кроме интерфейса CCI существуют другие варианты интерфейсов, позволяющие динамически создавать НТМL-код путем запуска на сервере приложений, в ответ на действие клиента, например, можно выделить интерфейс ISAPI (интерфейс прикладного программного интернет-сервера).
Отличие ISAPI от CGI заключается в том, что для поддержки CGI создаются отдельные приложения, выполняющиеся в виде самостоятельных программ, а ISAPI поддерживаются с помощью библиотек, динамически подключенных к серверу.
ISAPI – библиотеки, исполняющиеся непосредственно в адресном пространстве сервера, имеют большие возможности и обеспечивают более высокую производительность сервера, в то время, как CGI-приложения исполняются в ОС сервера как отдельные процессы и вынуждены определенным образом организовать обмен данными с самим сервером (что снижает производительность), но, с другой стороны, ошибка в библиотеке ISAPI может привести к выходу всего сервера из строя и его длительной неработоспособности. В то же время ошибка в коде CGI-приложения может в худшем случае привести только к аварийному завершению выполнения этого приложения, а сам сервер при этом сохранит работоспособность. Тогда в результате ошибки будет не верно отображена только какая-то одна НТМL-страница либо часть страницы, а все остальные части сервера будут продолжать работать.
Современные системы программирования позволяют создавать приложения и библиотеки, рассчитанные на работу в глобальной сети в соответствии со стандартами CGI или ISAPI. При этом создание исходного кода приложения практически ничем не отличается от создания обычной исполняемой программы, компилятор по-прежнему порождает объектные файлы, но компоновщик собирает исполняемый файл или библиотеку с учетом того, что они могут исполняться в архитектуре сервера глобальных сетей. Функции загрузчика выполняет ОС по команде сервера либо сам интернет-сервер.
Этот метод удобен, но имеет один серьезный недостаток: при изменении содержимого динамической НТМL-страницы или, же при изменении логики ее реакции на действия интернет-клиента требуется создать новый код CGI или ISAPI приложений, а для этого нужно выполнить полностью весь цикл построения результирующей программы, начиная от изменения исходного кода включая компиляцию и компоновку, поскольку содержимое web-страниц меняется довольно часто, в отличие от обычных программ, то такой подход не очень эффективен, может потребоваться перенос интернет-сервера с одной архитектуры на другую, а это потребует перестройки всех используемых CGI-приложений и ISAPI-библиотек.
Лучших результатов можно добиться, если не выполнять на сервере уже скомпилированный и готовый объектный код, а интерпретировать код программы, написанный на некотором языке. При интерпретации исходного кода сервер будет иметь производительность ниже, чем при исполнении готового объектного кода, но чаще всего этим можно пренебречь, поскольку производительность серверов Интернета ограничивает не мощность ВС, а пропускную способность начала обмена данными, тогда зависимость кода-сервера от архитектуры ВС будет минимальной, а изменить содержимое порождаемой HTML-страницы можно будет сразу же, как только будет изменен порождающий ее исходный код (без дополнительной перекомпиляции).
Существует несколько языков и соответствие им интерпретаторов, которые нашли применение в этой области и успешно служат цели порождения HTML-страниц. Среди них можно назвать язык: PERL – лежащий в основе различных web-технологий); PHP (Personal Home Page) – язык для программирования на сервере) и язык сценарий, на котором основана web-технология, ASP (Active Server Page) фирма Microsoft.
Текст на интерпретируемых языках, которые поддерживаются такими web-технологиями как ASP или PHP представляют собой часть текста обычных HTML-страниц со встроенными в них сценариями (Script). Эти сценарии можно писать на любом языке, поддерживаемом сервером; интернет-сервер обрабатывает их при поступлении запроса о URL адресе соответствующего файла. Он разбирает текст HTML-страниц, находит в нем тексты сценариев, вырезает их и интерпретирует в соответствии с синтаксисом и семантикой данного языка. В результате интерпретации получается выходной текст на языке HTML, который сервер вставляет непосредственно в то место исходной страницы, где встретился сценарий. Так обрабатывается web-страница на любом интерпретируемом языке, ориентированном на работу в глобальной сети.
Естественно для работы со страницей сервер должен иметь в своем составе интерпретатор соответствующего языка.
Все эти языки сценариев обладают присущими им характерными особенностями:
они имеют мощные встроенные функции и средства для работы со странами, поскольку основной задачей программ, написанных с помощью таких языков, является обработка входных параметров (строковых) и порождение HTML-кода;
все они имеют средства для работы в архитектуре «клиент-сервер» для обмена информацией с серверами БД, а многие современные версии таких языков – средства для функционирования в 3-х уровневой архитектуре для обмена данными с серверами приложений.
Недостаток всех перечисленных методов заключается в том, что сначала сервер вынужден строить HTML-описание, собирая его некоторым образом из каких-то своих данных, а затем клиент на своей стороне интерпретирует полученное описание HTML-страницы, т. о. выполняется двойная работа по генерации и интерпретации текстов на HTML. Кроме того, между клиентом и сервером по сети передаются громоздкие описания HTML-страниц, что повышает график сети.
Данные методы распространены в глобальной сети, поскольку они очень просты, а кроме того, от клиентского компьютера ничего не требуют, кроме способности интерпретировать тексты HTML. Эта особенность довольно существенна.