Автор работы: Пользователь скрыл имя, 20 Февраля 2013 в 22:15, реферат
Сервер приложений (англ. application server) — это программная платформа (software framework), предназначенная для эффективного исполнения процедур (программ, механических операций, скриптов), которые поддерживают построение приложений. Сервер приложений действует как набор компонентов, доступных разработчику программного обеспечения через API (Интерфейс прикладного программирования), который определен самой платформой.
Введение 3
Серверы приложений 4
Преимущества серверов приложений 4
Архитектура клиент-сервер: двухзвенная и трехзвенная 5
Двухзвенная архитектура 5
Преимущества 6
Недостатки 6
Многоуровневая архитектура клиент-сервер 7
Трехзвенная архитектура 7
Обзор архитектуры 7
Достоинства 8
Недостатки 9
Пример трёхзвенной архитектуры клиент-сервер 9
Общая схема серверов приложений 11
Ядро сервера приложений 12
Клиентский процесс сервера 13
Интерфейс сервера приложений 13
Структура клиентского пакета 14
Язык команд сервера приложений 14
Хранимые процедуры сервера приложений 16
Внутренние хранимые процедуры 17
Внешние хранимые процедуры 17
Инсталляция и администрирование пользовательских библиотек 18
Обмен данными между интерпретатором ASPL и внешними хранимыми процедурами 18
Создание пользовательских библиотек 19
Использование пользовательских библиотек 20
Заключение 22
Список литературы 23
Сервер приложений "Смарагд"
может поставляться в одном из
двух вариантов: базовом и расширенн
Общая схема сервера приложений показана на рис. 3.1.
Работа клиента с сервером приложений идет на уровне сессий. Сессия - это функционирующий процесс пользователя, запущенный ядром и обменивающийся данными через собственный специальный канал обмена. Канал обмена предназначен для обеспечения возможности отключения пользователем от текущей сессии и подключения к ней через некоторое время. Если за время, когда пользователь был отключен от канала, процессом клиента были выданы некоторые данные, они заносятся в канал и в дальнейшем, при подключении пользователя, тот считывает сохраненные данные из канала.
Для управления работой сессий и ядра, а также для выполнения определенных административных операций существует специальный набор команд для ядра сервера приложений. Подробнее об этих командах см. в разделе "Интерфейс сервера приложений".
Общая схема взаимодействия клиента и сервера приложений следующая.
Клиент открывает соединение с ядром сервера приложений и дает команду на начало новой сессии. По этой команде ядро запускает процесс, имя которого передано клиентом, или процесс по умолчанию, который записан в файле конфигурации. Далее, клиент и клиентский процесс обмениваются некоторыми данными. После того как клиент решил завершить сессию, он посылает команду ядру на завершение процесса клиента. При получении этой команды ядро сервера приложений останавливает процесс клиента (если тот не был остановлен самостоятельно), уничтожает канал клиента и выдает подтверждение завершения сессии. Связь с клиентом при этом не разрывается.
В другом варианте работы после запуска сессии и первичного обмена данными клиент может подать команду на отключение от сессии. После этого клиент отключается от канала запущенного процесса и может порождать новую сессию или отключиться от сервера. При этом клиентский процесс будет продолжать исполнение. Через некоторое время подключенный к ядру, но отключенный от всех сессий клиент дает ядру команду на подключение к работающей сессии, после проверки полномочий он подключается к каналу сессии и получает результаты работы процесса клиента.
Ядро сервера приложений представляет собой непосредственно сервер приложений и набор административных утилит для управления им. Функциями ядра являются задачи управления сессиями пользователя, сбор и предоставление информации о состоянии процессов пользователя администратору. Как описывалось выше, к задачам по управлению сессиями относятся задачи создания новой сессии, подключения к текущей сессии, отключения от нее, завершения текущей (или указанной администратором) сессии, управление аутентификацией пользователей, изменение приоритетов сессий.
Клиентский процесс сервера приложений - это, в общем виде, произвольный исполняемый файл, работающий через стандартный ввод/вывод. В расширенном варианте поставки сервера существует интерпретатор языка ASPL, который может использоваться как клиентский процесс.
На формат выходных данных клиентского
процесса накладывается (необязательное)
ограничение, при несоблюдении которого
клиенты не могут воспользоваться
стандартной библиотекой
Взаимодействие клиента и сервера приложений базируется на протоколе TCP/IP и организуется в виде обмена текстовыми строками (пакетами). Интерфейс клиента с сервером приложений является двухуровневым:
Для каждой команды клиента сервер приложений возвращает подтверждение о ее завершении, что является признаком окончания выполнения команды, или сообщение об ошибке. Сервер приложений поддерживает асинхронное выполнение команд клиента.
В общем виде структура клиентского пакета может быть записана в виде (рис.4.1.1):
Рис. 4.1.1. Общий формат пакета клиента.
Сигнатура пакета - стандартный 4-байтовый неизменяемый префикс пакета ("ASIF").
Длина пакета - беззнаковое длинное целое, показывающее размер тела пакета в байтах.
Тип пакета - однобайтовый символ, который принимает значение 'C' или 'D'.
Тело пакета - произвольная строка, содержащая команду или данные для сервера приложений (в общем виде - поток байт).
Пакеты клиента делятся на 2 вида:
Элементы языка - это команды, которые делятся на следующие классы:
LI <имя_клиента> <пароль>
BS
или
BS <имя запускаемого файла>
AS <идентификатор_сессии>
Рассмотрим примеры пакетов клиентов с использованием выше- перечисленных команд:
Хранимые процедуры сервера
приложений являются основным инструментом,
реализующим логику прикладной системы.
В рамках трехзвенной архитектуры
"клиент-сервер приложений-сервер"
такой подход позволяет максимально
облегчить создание клиентских приложений
и добиться создания так называемого
"тонкого клиента". С другой
стороны, достигается определенная
гибкость в реализации правил обработки
данных и их распределении между
СУБД, которая может их поддержкой
не обладать, и самими хранимыми
процедурами сервера
Следует отличать хранимые
процедуры баз данных и хранимые
процедуры сервера приложений. Хранимые
процедуры баз данных создаются SQL-оператором
Хранимые процедуры сервера приложений создаются в рамках сервера приложений и делятся на два класса:
Далее, если это специально не оговорено, под термином хранимая процедура понимается внутренняя хранимая процедура. Термин внешняя хранимая процедура всегда записывается полностью.
Внутренние хранимые процедуры создаются на языке хранимых процедур сервера приложений ASPL .
Для каждого пользователя сервера приложений существует три класса доступных ему функций и процедур:
Стандартные функции реализованы
стандартной библиотекой на
Подробнее язык хранимых процедур описан в разд. "Язык хранимых процедур сервера приложений".
Внешние хранимые процедуры сервера приложений внедряются в архитектуру сервера приложений администратором и разделяются на пользовательские процедуры и процедуры общего использования. Они представляют собой отдельные функции динамически подключаемых (разделяемых) библиотек той операционной системы, в которой выполняется сервер приложений.
При указании имени процедуры, содержащейся в пользовательской библиотеке и библиотеке общего назначения, преимущество имеет пользовательская библиотека, т.е. будет запущена процедура именно из нее.