- •107 Оглавление
- •Лекция №1-2 Информационные системы и их функции
- •Понятиеинформационной системы
- •Применение информационных систем
- •Определение понятия «информационная система»
- •Отсутствие общепринятого определения
- •Следствия общности определения
- •Граница между системой базы данных и приложением
- •Ресурсы информационных систем
- •Пользователи информационной системы
- •Специализированные информационные системы
- •Библиографический список
- •Лекция №3-4 Функции информационных систем
- •Сбор и регистрация информационных ресурсов
- •Хранение информационных ресурсов
- •Актуализация информационных ресурсов
- •Обработка информационных ресурсов
- •Предоставление информационных ресурсов пользователям
- •Другие функции
- •Библиографический список
- •Лекция №5-6 Классификация информационных систем
- •Классификации ис
- •Функциональное назначение модулей корпоративной ис.
- •Классификация рынка информационных систем
- •Проектирование ис
- •Библиографический список
- •Лекция №7-10 Модель клиент-сервер
- •Клиенты и серверы
- •Примеры клиента и сервера
- •Листинг 1.3.Файлheader.Pas, используемый клиентом и сервером
- •Листинг 1.4.Пример сервера
- •Листинг 1.5.Клиент, использующий сервер из листинга 1.4 для копирования файла
- •Разделение приложений по уровням
- •Уровень пользовательского интерфейса
- •Уровень обработки
- •Уровень данных
- •Варианты архитектуры клиент-сервер
- •Многозвенные архитектуры
- •Современные варианты архитектуры
- •Библиографический список
- •Лекция №11-12 Связь Уровни протоколов
- •Удаленный вызов процедур
- •Обращение к удаленным объектам
- •Распределенные объекты
- •Объекты времени компиляции против объектов времени выполнения
- •Сохранные и нерезидентные объекты
- •Статическое и динамическое удаленное обращение к методам
- •Библиографический список
- •Лекция №13-14 Связь посредством сообщений
- •Сохранность и синхронность во взаимодействиях
- •Связь на основе потоков данных
- •Поддержка непрерывных сред
- •Поток данных
- •Библиографический список
- •Лекция №15-16 Оценка технических параметров ис и ее компонент Общая постановка задачи
- •Стандарты управления качеством промышленной продукции
- •Библиографический список
- •Лекция №17-18 Отказоустойчивость
- •Основные концепции
- •Модели отказов
- •Различные типы отказов
- •Маскирование ошибок при помощи избыточности
- •Библиографический список
- •Лекция №19-20 Жизненный цикл информационных систем
- •Каскадная и спиральная модели
- •Стандарты cals
- •Эксплуатация информационных систем
- •Эффективность реализации cals
- •Лекция №21-22 Общая стоимость владения информационной инфраструктурой
- •Методика Gartner Group
- •Оценка общей стоимости владения
- •Лекция №23-24 Защита информации Угрозы, правила и механизмы
- •Архитектура защиты Globus
- •Библиографический список
- •Лекция №25-26 Вопросы разработки
- •Фокус управления
- •Многоуровневая организация механизмов защиты
- •Распределение механизмов защиты
- •Простота
- •Библиографический список
- •Лекция №27-28 Криптография
- •Нотация, используемая в этой главе
- •Симметричные криптосистемы — des
- •Криптосистемы с открытым ключом — rsa
- •Хэш-функции — md5
- •Библиографический список
Листинг 1.4.Пример сервера
uses
header.pas;
var
m1, m2: TMessage; /* входящее и исходящее сообщения */
r: integer; /* код результата */
begin
while(TRUE) do /* сервер работает непрерывно */
begin
receive(FILE_SERVER, m1); /* блок ожидания сообщения */
case m1.opcode of /* в зависимости от типа запроса */
OP_CREATE: r := do_create(m1, m2);
OP_READ: r := do_read(m1, m2);
OP_WRITE: r := do_write(m1, m2);
OP_DELETE: r := do_delete(m1, m2);
else r := E_BAD_OPER;
end;
m2.result := r; /* вернуть результат клиенту */
send(m1.source, m2): /* послать ответ */
end
end.
Листинг 1.5.Клиент, использующий сервер из листинга 1.4 для копирования файла
uses
header.pas;
/* процедура копирования файла через сервер */
function copy(src: string, dst: string): integer;
var
m1: TMessage; /* буфер сообщения */
position: longint; /* текущая позиция в файле */
client: longint = 110; /* адрес клиента */
begin
initialize(); /* подготовиться к выполнению */
position := 0;
repeat
m1.opcode := OP_READ; /* операция чтения */
m1.offset := position; /* текущая позиция в файле */
m1.count := BUF_SIZE; /* сколько байт прочитать */
m1.name := src; /* скопировать имя читаемого файла*/
send(FILESERVER, m1); /* послать сообщение на файловый сервер*/
receive(client, m1); /* блок ожидания ответа */
/* Записать полученные данные в файл-приемник. */
m1.opcode := OP_WRITE; /* операция: запись */
m1.offset := position; /* текущая позиция в файле */
m1.count := m1.result; /* сколько байт записать */
ml.name := dst); /* скопировать имя записываемого файла*/
send(FILE_SERVER, m1); /* послать сообщение на файловый сервер */
receive(client, m1); /* блок ожидания ответа */
position := position + m1.result; /* в m1.result содержится количество записанных байтов */
until( m1.result <= 0 ); /* повторять до окончания */
/* вернуть ОК или код ошибки */
if(m1.result >= 0 then result := OK else result := m1.result);
end;
Разделение приложений по уровням
Модель клиент-сервер была предметом множества дебатов и споров. Один из главных вопросов состоял в том, как точно разделить клиента и сервера. Понятно, что обычно четкого различия нет. Например, сервер распределенной базы данных может постоянно выступать клиентом, передающим запросы на различные файловые серверы, отвечающие за реализацию таблиц этой базы данных. В этом случае сервер баз данных сам по себе не делает ничего, кроме обработки запросов.
Однако рассматривая множество приложений типа клиент-сервер, предназначенных для организации доступа пользователей к базам данных, многие рекомендовали разделять их на три уровня.
- уровень пользовательского интерфейса;
- уровень обработки;
- уровень данных.
Уровень пользовательского интерфейса содержит все необходимое для непосредственного общения с пользователем, например, для управление дисплеем. Уровень обработки обычно содержит приложения, а уровень данных — собственно данные, с которыми происходит работа. В следующих пунктах мы обсудим каждый из этих уровней.
Уровень пользовательского интерфейса
Уровень пользовательского интерфейса обычно реализуется на клиентах. Этот уровень содержит программы, посредством которых пользователь может взаимодействовать с приложением. Сложность программ, входящих в пользовательский интерфейс, весьма различна.
Простейший вариант программы пользовательского интерфейса не содержит ничего, кроме символьного (не графического) дисплея. Такие интерфейсы обычно используются при работе с мэйнфреймами. В том случае, когда мэйнфрейм контролирует все взаимодействия, включая работу с клавиатурой и монитором, мы вряд ли можем говорить о модели клиент-сервер. Однако во многих случаях терминалы пользователей производят некоторую локальную обработку, осуществляя, например, эхо-печать вводимых строк или предоставляя интерфейс форм, в котором можно отредактировать введенные данные до их пересылки на главный компьютер.
В наше время даже в среде мэйнфреймов наблюдаются более совершенные пользовательские интерфейсы. Обычно на клиентских машинах имеется как минимум графический дисплей, на котором можно задействовать всплывающие или выпадающие меню и множество управляющих элементов, доступных для мыши или клавиатуры. Типичные примеры таких интерфейсов — надстройка X-Windows, используемая во многихUNIX-системах, и более ранние интерфейсы, разработанные для персональных компьютеров, работающих под управлениемMS-DOSиAppleMacintosh.
Современные пользовательские интерфейсы значительно более функциональны. Они поддерживают совместную работу приложений через единственное графическое окно и в ходе действий пользователя обеспечивают через это окно обмен данными. Например, для удаления файла часто достаточно перенести значок, соответствующий этому файлу, на значок мусорной корзины. Аналогичным образом многие текстовые процессоры позволяют пользователю перемещать текст документа в другое место, пользуясь только мышью.