СПАСОИ (10) - Лекция №13 - Анализ и выбор архитектуры (продолжение)
...начало
Анализ и выбор архитектуры распределённой системы
Модели доступа к данным
Модель доступа по технологии Интернет/Интранет
В рамках этой модели используются следующие варианты:
- доступ к данным из CGI и API программ;
- доступ к данным из Java-апплетов и управляющих элементов ActiveX.
CGI и API
Браузер отображает страницу, пользователь заполняет поля формы и жмёт submit
, который связан с определённой CGI-программой. Программы выполняется на сервере, обращаясь к ODBC, который обращается к БД. Результаты выполнения запросов возвращаются к CGI-программе, которая генерирует новый HTML и отдаёт его на рабочую станцию пользователю в веб-браузер.
Преимущества CGI:
- веб-сервер выступает в роли сервера-приложений (централизованное администрирование CGI-программ);
- CGI-интерфейс универсален и реализован во всех веб-серверах;
- для доступа к данным подходит любой веб-браузер.
Недостатки CGI:
- каждая CGI-программа (даже самая крохотная) выполняется как задача на уровне ОС. Инициализация каждой задачи и переключение между задачами занимает много времени, так как требуется переключение между блоками управления страницей;
- CGI-программы не поддерживают контекст связи с БД. БД открывается при каждом вызове очередной (да и той же самой) CGI-программы.
Для устранения недостатков CGI используется API-интерфейс (активные страницы):
- ASP;
- PHP;
- JSP.
В отличие от CGI выполняются как потоки в рамках одной задачи - не создают новые задачи в рамках ОС.
Преимущества API:
- выполняются быстрее, чем CGI;
- позволяют поддерживать контекст соединения с БД.
Недостатки API:
- программы разных производителей несовместимы между собой;
- платформозависимы.
Java-апплеты и ActiveX
HTML интерпретатор анализирует документ, если встречает апплет, то браузер обращается к веб-серверу с запросом на чтение соответствующей Java программы. Эта программа загружается на рабочую станцию и интерпретируется Java машиной.
Если встречается SQL оператор, то через JDBC идёт обращение к серверу БД. Результаты выполнения запросов возвращаются в Java программу, и она выводит результаты в браузер.
Преимущества Java:
- программа выполняется на рабочей станции. Неожиданно это стало преимуществом;
- Java апплеты мобильны, язык гибок для написания сложных программ;
- JDBC интерфейс является универсальным, SQL внутри Java не зависит от СУБД;
- большое количество открытых Java программ.
Недостатки Java:
- Java программы передаются по сети, поэтому они должны быть небольшими, что накладывает ограничение на функционал;
- пользователь с подозрением относится к выполняемым на его рабочей станции прилетевшим из интернетов Java программам;
- Java программы работают медленее, чем бинарный код;
- сложность разработки Java апплетов, выполняющих доступ к БД.
Как и Java апплеты, объекты ActiveX загружаются на рабочую станцию. В управляющие элементы могут быть включены SQL операторы. Но в отличие от Java, в ActiveX выполняется бинарный код (то есть, они быстрее). Недостатком является Microsoft - ActiveX работает только на платформе MS Windows.
Интероперабельные системы
Методы доступа к разнородным СУБД.
В настоящее время для этого используются:
- шлюзы;
- ODBC и его аналоги;
- XML и веб-сервисы.
Шлюзы
Схема объединения разнородных систем с помощью шлюза:
Опишем организацию доступа приложения Oracle к серверу Informix.
Если в этом приложении встречается SQL оператор, то он передаётся на сервер Oracle. Если таблицы, указанные в этом операторе, хранятся на сервере Oracle, то оператор выполняется, и результаты возвращаются на рабочую станцию. Если указаны таблицы сервера Informix, то Oracle обращается к этом серверу через шлюз и там всё как раньше.
По той же схеме осуществляется доступ приложения Informix к серверу Oracle.
ODBC
При выполнении приложения встречается SQL оператор, происходит обращение к менеджеру драйверов, тот выбирает соответствующий драйвер, и происходит обращение к серверу БД. Результаты потом обратно на рабочую станцию, как обычно.
Обращение к ODBC в Windows:
- с помощью функции
SQL_CONNECT
приложение подключается к серверу БД. Несколько серверов - несколько операторов; - в строковой переменной подготавливается SQL оператор;
- с помощью функции
SQL_EXECUTE
происходит выполнение этого SQL оператора; - если было возвращено несколько записей, то необходимо организовать цикл, в котором с помощью функции
SQL_FETCH
будет выбираться очередная запись.
продолжение...