Автор работы: Пользователь скрыл имя, 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
Внешняя хранимая процедура
сервера приложений может быть создана
с использованием любого языка программирования,
компилятор которого позволяет создавать
разделяемые библиотеки операционной
системы. Для UNIX такие библиотеки, как правило,
имеют расширение .so, для Windows .
Процесс инсталляции заключается
в размещении пользовательских библиотек
в соответствующие каталоги. Возможны
два вида пользовательских библиотек:
общие и частные. Общие библиотеки
пользователей должны находиться в
каталоге %AS_DIR%\lib. Там находится библиотека
стандартных функций lib.dll. Свои частные
библиотеки каждый пользователь должен
помещать в специально отведённый для
них каталог %AS_DIR%\lib\<имя_
Каждый пользователь имеет доступ только к своим частным библиотекам. Общие библиотеки доступны всем пользователям.
При подключении библиотеки с помощью оператора OPEN LIBRARY <имя_библиотеки> интерпретатор в поисках данной библиотеки просматривает сначала каталог, содержащий частные библиотеки пользователя. Если библиотека с таким именем не найдена, то интерпретатор просматривает каталог, в котором хранятся общие библиотеки пользователей. В случае совпадения имён частной и общей библиотек, интерпретатор подключает частную библиотеку пользователя.
При вызове функции интерпретатор ищет её в подключенной библиотеке. Если функция не найдена, то интерпретатор ищет её в библиотеке стандартных функций, которая подключается автоматически.
Обмен данными между интерпретатором ASPL и внешними хранимыми процедурами осуществляется через внутренний стек интерпретатора. Перед вызовом внешней процедуры интерпретатор помещает в стек входные значения процедуры и передает ей управление. Внешняя процедура извлекает входные значения из стека, обрабатывает их, помещает в стек выходные значения и передает управление интерпретатору. Интерпретатор извлекает из стека выходные значения и обрабатывает их.
Пользовательские библиотеки создаются по общим правилам построения динамически подключаемых библиотек (см. приложение). Наряду с этим есть некоторые особенности, относящиеся к передаче входных и выходных значений библиотечных функций. Любая библиотечная функция должна в явном виде извлекать входные значения из стека и помещать в стек выходные значения. Это объясняется тем, что интерпретатор заранее не может знать о количестве передаваемых параметров. Поэтому перед передачей управления функции интерпретатор помещает в стек входные значения, не проверяя их количество, а функция, получив управление, извлекает входные значения из стека и проверяет их число. После вычисления выходных значений функция должна поместить их в стек. Для того чтобы отличать библиотечные функции от стандартных функций языка C, все функции, входящие в пользовательские библиотеки, должны иметь префикс as_ и быть объявлены следующим образом:
void as_<имя_функции>(void)
Для извлечения входных значений из стека служит функция Pop(). Она возвращает значение типа VALUE, так как в стеке содержатся значения только этого типа. Для того чтобы привести переменную типа VALUE к требуемому типу, нужно воспользоваться одной из функций вида GetAs<Type>(VALUE *), где Type - требуемый тип. Проверка стека на наличие в нём значений осуществляется с помощью функции IsStackEmpty().
После вычисления выходных значений, они должны быть приведены к типу VALUE с помощью одной из функций вида Make<Type>(VALUE*, <Type>). Затем выходные значения заносятся в стек с помощью функции Push(VALUE*) или Return (VALUE*). Эти функции идентичны.
В качестве примера рассмотрим функцию нахождения синуса as_sin, содержащуюся в библиотеке стандартных функций lib.dll.
void as_sin ( void ) /*Объявление функции*/
{
VALUE v;
double f;
if (IsStackEmpty() ) /*Проверка числа параметров*/
AS_ERROR ("Illegal use of sin function.");
v = Pop(); /*Извлечение входного значения из стека*/
f = GetAsDouble (&v); /*Приведение входного значения к типу Double*/
errno = 0;
f = sin(f);
if ( errno != 0 )
AS_ERROR("SIN error."); /*Сообщение об ошибке и выход из функции*/
Drop(&v);
MakeDouble (&v, f); /*Приведение выходного значения к типу VALUE*/
Return ( &v ); /*Занесение выходного значения в стек*/
}
Для использования функций из пользовательской библиотеки соответствующая библиотека должна быть подключена с помощью оператора OPEN LIBRARY <имя_библиотеки>. После этого функции, входящие в библиотеку, могут быть вызваны оператором CALL:
CALL <имя_функции>
(<список_входных_значений>) RETURNING <список_возвращаемых_значений>
Если функция возвращает только одно значение, то её можно использовать в выражениях, например, f = sin(x).
Замечание. При вызове функций, входящих в пользовательские библиотеки, к имени функции не нужно добавлять префикс as_, так как интерпретатор делает это автоматически. Например, рассмотренную выше функцию as_sin следует вызывать CALL sin(x) RETURNING x.
Сервер приложений (СП) - это набор программного обеспечения, позволяющий распределить обработку данных по сети, организовать специально выделенные серверы для выполнения определенных задач, многозадачный режим выполнения программ пользователя
Многие серверы приложений
позволяют реализовать
Клиент-сервер (англ. Client-
Различают двухуровневый
и трехуровневый клиент-
Функции сервера (serve - обслуживать) - выполнять операции по запросам клиентов. Это может быть: хранение и передача файлов, выполнение приложений с выдачей результатов, обслуживание принтеров и т.д.
Хранимые процедуры серверов приложений бывают внутренние и внешние.
Внутренние хранимые процедуры создаются на языке хранимых процедур сервера приложений ASPL .
Внешние хранимые процедуры сервера приложений внедряются в архитектуру сервера приложений администратором и разделяются на пользовательские процедуры и процедуры общего использования.