- •Корпоративные информационные системы. Задача интеграции. Корпоративные системы.
- •Модель osi – набор стандартов для построения корпоративной системы
- •Интегрированные и комплексные приложения
- •Задача: общие данные, общие процедур, общие вычислительные ресурсы.
- •Проблемы на пути интеграции
- •Прозрачность. Открытость. Масштабируемость. Концепции аппаратных решений. Определение распределенной системы. Прозрачность.
- •Открытость.
- •Масштабируемость.
- •Raid-технологии.
- •Параллелизм.
- •Концепции аппаратных решений. Мультипроцессоры.
- •Гетерогенные мультикомпьютерные системы.
- •Симметричное мультипроцессирование
- •Кластеры.
- •Двухуровневые, трехуровневые, распределенные одноранговые информационные системы. Виды ис
- •Функциональная нагрузка компонентов в ис
- •Двухуровневые архитектуры
- •Трехуровневые архитектуры
- •Распределенные одноранговые архитектуры
- •Единое информационное пространство. Подход к построению объектно-ориентированной одноранговой информационной системе.
- •Архитектура взаимодействия компонент распределенной ис
- •Обзор методов интеграции. Введение
- •Пути устранения аппаратных различий, кросс – платформенные приложения.
- •Java applets, апплеты.
- •Файлы (буферы) общего доступа.
- •Единый язык доступа к данным (sql).
- •Обмен сообщениями (dde).
- •Удаленный вызов процедур (rpc)
- •Вставка и внедрение объектов
- •Ole (связывание и внедрение объектов), ole Automation.
- •Классификация приложений по отношению к технологии ole (com).
- •ActiveX объекты.
- •Идентификация com объектов.
- •Сравнение com (ActiveX) объектов и java апплетов.
- •Доступ к удаленным объектам (dcom, .Net, corba)
- •Использование командных файлов и скриптов
- •Доступ к базам данных (ado, dao, odbc)
- •Применение web-технологий
- •Именованные каналы
- •Объектно-ориентированное программирование в vba Среда программирования. Типы данных. Процедуры. Окно проекта, окно свойств, окно кода, окно немедленно выполняемых команд, окно контрольных значений.
- •Процедуры, функции, передача параметров, область видимости.
- •Типы данных.
- •Вызов макроса с вычисляемым именем
- •Запуск макроса в заданное время
- •Запуск внешней программы, управление ею
- •Вызов api-функций и других библиотечных функций
- •Программное изменение кода.
- •Динамические массивы
- •Объектно-ориентированное программирование Базовые понятия ооп
- •Расширение объектной модели
- •Коллекция
- •Раннее и позднее связывание
- •Дополнительные элементы управления (ActiveX –объекты)
- •Описание программирования в vba, модели com Доступ к вставленным в документ ole-объектам
- •Доступ к внешним com-серверам
- •Вычисляемые свойства, свойства только для чтения.
- •События. Обработчики событий.
- •Использование событий объекта Application
- •Использование диалогов
- •Свойство для программиста.
- •Пользовательские классы. Классы.
- •Класс, объекты которого реагируют на события.
- •Моделирование наследования. Фактическое наследование. WithEvents.
- •Пользовательские события.
- •Как исп польз события
- •Создание экземпляра класса.
- •Автоматическая сборка мусора
- •Уничтожение экземпляра класса
- •???Интерфейсы.
- •???Интеграция при помощи промежуточного буфера
- •Обмен сообщениями. Протокол dde.
- •Задачи интеграции и децентрализации.
- •Фрагментация данных и размещение
- •Язык доступа к данным sql Стандартные команды
- •Язык запросов
- •Изменение данных при помощи sql
- •Изменение структуры базы данных при помощи ddl
- •Выполнение команд изменения структуры, изменения базы данных
- •Расширения Jet 4.0 ansi-92
- •Доступ к базам данных.
- •Доступ к базам данных с помощью odbc.
- •Доступ через odbc из Delpi7.
- •Доступ к базам данных с помощью технологий ado. Соединение, курсор
- •Свойства и методы набора записей (курсора).
- •Вызов отчетов, сформированных в базе данных
- •Пример dao
- •???Доступ к базам данных с помощью технологий dao.
- •???Доступ к базам данных с помощью web технологий.
- •Удаленный вызов процедур.
- •Обращение к удаленным объектам. Привязка клиента к объекту. Статическое и динамическое удаленное обращение к методам. Передача параметров. Dce, rmi.
- •Распределенная система объектов corba. Введение.
- •Архитектура системы.
- •Структура связей corba.
- •Исключения corba.
- •Передача параметров.
- •Corba-объекты и серванты.
- •Отображение idl на языки программирования
- •Объектные адаптеры.
- •Транзакции и сервис транзакций в corba.
- •Обзор технологий dcom, .Net Определение
- •Немного истории
- •Решение .Net
- •Модель .Net
- •Обзор двоичных файлов .Net.
Исключения corba.
Исключения не являются полноценным типом. Например, их невозможно передавать в качестве аргументов при вызове методов, нельзя создавать в структурах поле типа «исключение», нельзя использовать вложенные исключения. Исключения в CORBA примитивнее, чем в С++ или в JAVA, поскольку требуется делать их отображения на языки программирования, которые не используют модель исключительных ситуаций.
Различают два вида исключений: системные и определенные пользователем. Перечень всех системных исключений дается в спецификации CORBA. Любое системное исключение всегда содержит два поля: код исключения и признак завершенности операции (говорит о том, на каком этапе выполнения удаленного запроса возникла ошибка). Исключения, определенные пользователем, используются в тех случаях, когда исключительная ситуация возникла не в связи с системой, а в связи с логикой приложения.
Интерфейсы CORBA. Определить интерфейс – значит определить тип серверного объекта. На IDL невозможно создать экземпляр.
Передача параметров.
Спецификация CORBA предполагает три вида передачи параметров: in, out, inout.
in - параметр передается от клиента серверу, за выделение и освобождение памяти отвечает клиент. Предполагается, что реализация метода не пытается изменить этот параметр, если это возможно.
out – параметр передается от сервера клиенту. За выделение памяти отвечает сервер, за освобождение - клиент.
inout – параметр создается и инициализируется клиентом, затем передается на сервер. После того, как сервер использовал его начальное значение, он может уничтожить объект и создать новый, с другим значением, хотя это и не обязательно. За освобождение памяти отвечает клиент.
Наследование интерфейсов – мощная концепция. Главное – она позволяет объявлять в IDL методы с аргументом типа "объектная ссылка", указывая в качестве типа такого аргумента базовый интерфейс (в соответствии с некоторой иерархией, таких иерархий может быть несколько!).
Обеспечение информации об удаленных объектах подразумевает их хранение в базах данных CORBA – репозитариях интерфейсов. Каждая запись такой базы должна иметь уникальный ключ, называемый репозитарным идентификатором (RID). Уникальность этого ключа должен обеспечить разработчик системы. В репозитариях хранится практически та же информация, что и в IDL –файлах. Начиная с версии CORBA 2.0, требуется взаимодействие различных ORB, что повлекло ведение нескольких форматов RID.
Corba-объекты и серванты.
Итак, создав IDL – объявления, мы построили тип будущих CORBA –объектов. Требования, предъявляемые к серверному объекту:
Особенности поведения серверного объекта определяются на уровне самой технологии. То есть объект не может быть ни переменной какого-то конкретного языка программирования (в отличие от серверного объекта Java-технологии), ни двоичным объектом, специфическим для конкретной аппаратной реализации или ОС (как серверные объекты COM).
Серверный объект в общем случае должен иметь состояние, то есть обеспечивать сохранность информации между вызовами. Это означает, в частности, что все серверные объекты, даже одного типа, отличаются друг от друга.
Серверный объект должен иметь возможность существовать дольше, чем работает создавшее его приложение. Остановка приложения (с возможностью его последующего запуска) не должна в общем случае приводить к уничтожению конкретного серверного объекта.
Из этого следует, что для обеспечения этих требований серверный объект должен быть просто совокупностью информации и потенциальных возможностей, предоставляемых в рамках технологии CORBA. Он не существует как некоторая реальность, которая имеет размер или находится в оперативной памяти или в базе данных по некоторому адресу. Это – логическое понятие, смысл которого таков: пока не создан ни один CORBA – объект удаленное взаимодействие приложений просто невозможно. Если объект создан, для клиента возникает потенциальная возможность получить доступ к той функциональности, которая определяется интерфейсом объекта, с помощью средств CORBA. Важно при этом, что взаимодействие будет именно с этим объектом, а не с другим объектом этого же типа.
Создание CORBA – объекта – это активное действие – вызов некоторого метода, входящего в API CORBA. При этом создается логический CORBA – объект и физическая ссылка на него. Объектная ссылка (или объектная ссылка уровня ORB) представляет собой последовательность октетов, в которых закодирована вся необходимая информация о созданном CORBA – объекте. В нее входят:
Вид сетевого протокола (одного или нескольких), который может быть использован для доступа к данному объекту.
Параметры приложения, создавшего CORBA – объект, с учетом особенностей сетевого протокола. Например, если в качестве транспортного протокола используется TCP/IP, то такими параметрами будут IP-адрес хоста, на котором запущено серверное приложение, и номер порта, который используется им для CORBA – взаимодействия.
Имя фабрики CORBA – объектов (объектного адаптера), который создал данный объект.
Уникальный идентификатор объекта в данной фабрике.
Репозитарный идентификатор CORBA – интерфейса, который является типом данного CORBA – объекта.
И другое.
Объектная ссылка и CORBA – объект – это не синонимы. Как обычно для любых объектно-ориентированных языков, на один и тот же объект может существовать несколько ссылок.
Клиентское приложение может успешно выполнить вызов серверного объекта в следующем случае:
На нужном хосте запущено серверное приложение, причем это приложение слушает «правильный» порт, содержит фабрику объектов, создавшую указанный в запросе COBRA – объект, активизировало этот объект.
Уничтожение CORBA – объекта выражается в том, что при попытке вызова клиентом данного CORBA – объекта возникает стандартное системное исключение CORBA OBJECT_NOT_EXIST. Возбуждение этой исключительной ситуации – задача прикладного серверного приложения.
