Книги: [Классика] [Базы данных] [Internet/WWW] [Сети] [Программирование] [UNIX] [Windows] [Безопасность] [Графика] [Software Engineering] [ERP-системы] [Hardware]
Содержание
Об авторе
Предисловие
Введение
Компакт-диск
От издательства
Часть I. Вводная
Распределенные системы: задачи и терминология
Задачи, для решения которых используются распределенные системы
Часто используемые термины
Объектно-ориентированное программирование (ООП)
Объект
Метод
Свойство
Состояние
Интерфейс
Реализация
Наследование
Полиморфизм
Сообщение
Компонентная модель
Компонент
Object Request Broker (ORB)
Стаб
Маршалинг
Сервер
Серверный объект
Транзакция
Монитор транзакций (ОТМ)
Распределенная система
Краткий обзор современных технологий
XML
CGI/ISAPI/Servlet/JSP
CGI
ISAPI/NSAPI
Servlets
JSP
Использование CGI/ISAPI/ASP/Servlet в распределенных системах
DCOM
CORBA
RMI
JavaBeans/Enterprise JavaBeans
JavaBeans (JB)
Enterprise JavaBeans (EJB)
EJB Server
EJB Container
Заключение
CORBA. Архитектура, состояние и перспективы
IDL
ORB
Объектные адаптеры
Сервисы CORBA
Сервис имен
Трейдер-сервис
Сервис свойств
Сервис отношений
Сервис цикла жизни
Сервис событий
Сервис долговременного хранения
Сервис внешнего представления
Сервис транзакций
Сервис совместного доступа
Сервис безопасности
Сервис времени
Сервис лицензирования
Сервис контейнеров
Сервис запросов
Реализация INPRISE/Visigenic
Перспективы - CORBA 3.0
Языки программирования и распределенные системы
C++
Delphi
Java
Часть II. Основы CORBA
Глава 1. Язык определения интерфейсов IDL
1.1. Служебные слова, идентификаторы и комментарии
1.2. Основные типы данных IDL
1.2.1. Базовые типы данных
1.2.2. Сконструированные типы данных
1.2.3. Исключения CORBA
1.2.4. Объектные ссылки и интерфейсы
1.2.5. Типы-значения IDL
1.2.6. Абстрактные интерфейсы
1.2.7. Тип Any и интерфейс TypeCode
1.3. Константы IDL
1.4. Модули и пространства имен
1.4.1. Синтаксис определения модуля
1.4.2. Вложенные пространства имен
1.5. Структура IDL-файла
1.5.1. Модули
1.5.2. Интерфейсы
1.5.3. Типы-значения
1.5.4. Структуры, объединения и исключения
1.6. Псевдо-IDL (PIDL)
1.7. Репозитарные идентификаторы (RepositorylD)
1.7.1. Формат OMG IDL
1.7.2. Формат RMI
1.7.3. Формат DCE UUID
1.7.4. Формат LOCAL
1.8. Препроцессор
1.8.1. Основные директивы препроцессора
1.8.2. Директива #pragma ID
1.8.3. Директива #pragma prefix
1.8.4. Директива #pragma version
Глава 2. Отображение IDL на C+ +
2.1. Некоторые конструкции C++
2.1.1. namespace
2.1.2. template-классы
2.1.3. auto_ptr
2.1.4. Некоторые классы STL
2.2. Опции компилятора idl2cpp
2.2.1. Опция -boa
2.2.2. Опция -excep_spec
2.2.3. Опция -namespace
2.2.4. Опция -tie
2.2.5. Опция -type_code_info
2.3. Код, сгенерированный для использования на стороне клиента
2.4. Код, сгенерированный для использования на стороне сервера
2.5. _var, _ptr и _out-типы
2.5.1. Тип _ptr
2.5.2. Тип _var
2.5.3. Тип _out
2.6. Идентификаторы
2.7. Базовые типы данных
2.7.1. Простые базовые типы данных
2.7.2. Типы string и wstring
2.7.3. Функции управления динамической памятью
2.7.4. Класс CORBA::String_var
2.7.5. Типичные ошибки при использовании Strig_var и char*
2.7.6. Перечисления
2.8. Сконструированные типы данных
2.8.1. Оператор typedef
2.8.2. Массивы
2.8.3. Последовательности
2.8.4. Структуры
2.8.5. Объединения
2.9. Исключения
2.10. Интерфейсы
2.10.1. Общие принципы
2.10.2. Объектные ссылки
2.10.3. Proxy-объект
2.10.4. Преобразования типов
2.10.5. Использование счетчиков ссылок
2.11. Классы на стороне клиента
2.12. Знакомство с объектными адаптерами
2.13. Классы на стороне сервера
2.14. Типы-значения
2.14.1. Обычный valuetype
2.14.2. Абстрактные valuetype
2.14.3. Наследование valuetype
2.14.4. Boxed valuetype
2.14.5. Базовые типы, перечисления и объектные ссылки
2.14.6. Структуры строки struct
2.14.7. Строки string и wstring
2.14.8. Типы union, sequence, fixed и any
2.14.9. Массивы
2.14.10. Valuetype, поддерживающий IDL interface
2.15. Абстрактные интерфейсы
2.16. Тип any и TypeCode
2.16.1. Тип any
2.16.2. Тип any и string/wstring
2.16.3. Структуры, объединения и последовательности и any
2.16.4. Массивы и any
2.16.5. Объектные ссылки и any
2.16.6. TCKind
2.16.7. TypeCode
2.16.8. DynAny
2.16.9. Пример использования
2.17. Константы
2.18. Модули
2.19. Tie-классы
2.20. Схема управления динамической памятью
2.21. Передача аргументов
Глава 3. Отображение IDL на Java
3.1. Опции компилятора id!2java
3.1.1. Опция -[no_]boa
3.1.2. Опция -[no_]comments
3.1.3. Опция -[no_]examples
3.1.4. Опция -tie
3.2. Код, сгенерированный для использования на стороне клиента
3.3. Код, сгенерированный для использования на стороне сервера
3.4. Helper-классы
3.5. Holder-классы
3.6. Интерфейс IDLEntity
3.7. Идентификаторы
3.8. Базовые типы данных
3.8.1. Простые базовые типы данных
3.8.2. Строки
3.8.3. Перечисления
3.9. Сконструированные типы данных
3.9.1. Оператор typedef
3.9.2. Массивы
3.9.3. Последовательности
3.9.4. Структуры
3.9.5. Объединения
3.10. Исключения
3.11. Интерфейсы
3.11.1. Общие принципы
3.11.2. Объектные ссылки
3.12. Классы на стороне клиента
3.12.1. Методы класса Helper
3.12.2. Система обеспечения переносимости кода стабов
3.13. Классы на стороне сервера
3.13.1. Методы класса <имя>РОА
3.13.2. Система обеспечения переносимости кода скелетов
3.14. Типы-значения
3.14.1. Обычный (stateful) valuetype
3.14.2. Абстрактные valuetype
3.14.3. Наследование valuetype.
3.14.4. Boxed valuetype
3.15. Абстрактные интерфейсы
3.16. Тип any и TypeCode
3.16.1. Тип any
3.16.2. IDL-типы данных и any
3.16.3. TCKind
3.16.4. TypeCode
3.16.5. DynAny
3.16.6. Пример использования
3.17. Константы
3.18. Модули
3.19. Tie-классы
3.20. Передача аргументов.
Глава 4. Отображение IDL на Delphi
4.1. Delphi и распределенные системы
4.1.1. Состояние, проблемы и перспективы
4.1.2. Delphi 5 и CORBA
4.1.3. Реальная поддержка CORBA в Delphi
4.1.4. Особенности управления памятью в Delphi 5 при работе с CORBA
4.1.5. Производительность
4.2. Опции компилятора id!2pas
4.2.1. Опции -generate_empty_units/-no_generate_empty_units .
4.2.2. Опции -comments/-no_comments.
4.2.3. Опция -root_dir <path>
4.3. Код, сгенерированный для использования на стороне клиента
4.4. Код, сгенерированный для использования на стороне сервера
4.5. Helper-классы
4.6. Stub-классы
4.7. Идентификаторы
4.8. Базовые типы данных
4.8.1. Простые базовые типы данных
4.8.2. Строки
4.8.3. Перечисления
4.9. Сконструированные типы данных
4.9.1. Оператор typedef
4.9.2. Массивы
4.9.3. Последовательности
4.9.4. Структуры
4.9.5. Объединения
4.10. Исключения
4.11. Интерфейсы
4.12. Тип any
4.13. Константы
4.14. Модули
4.15. Передача аргументов
Глава 5. ORB
5.1. ORB и их взаимодействие
5.2. Объектная ссылка и IOR
5.3. Инициализация ORB
5.4. Интерфейс ORB
5.4.1. Преобразования между объектными ссылками и строками
5.4.2. Организация динамических и асинхронных вызовов
5.4.3. Информационные методы
5.4.4. Обеспечение доступа к сервисам
5.4.5. Динамическое создание объектов типа TypeCode
5.4.6. Методы управления работой сервера приложений
5.4.7. Создание объектов типа Policy
5.4.8. Управление фабриками для типов-значений
Глава 6. Объекты и объектные ссылки
6.1. Понятие объекта CORBA
6.2. Объекты и интерфейсы
6.3. Объектная ссылка
6.4. Интерфейс CORBA: :0bject
6.4.1. IDL-объявление
6.4.2. Метод _get_interface()
6.4.3. Метод is_nil()
6.4.4. Метод _duplicate()
6.4.5. Метод -release()
6.4.6. Метод is_a()
6.4.7. Метод _non_existent()
6.4.8. Метод is_equivalent()
6.4.9. Метод _hash()
6.4.10. Метод _get_policy()
6.5. Некоторые методы, создаваемые при отображении интерфейса
CORBA::Object для VisiBroker
6.5.1. Метод _nil() (только для C++)
6.5.2. Метод CORBA::_release() (только для C++)
6.6. Расширения интерфейса CORBA::Object для VisiBroker
6.6.1. Метод _is_bound()
6.6.2. Метод _is_persistent()
6.6.3. Метод _is_local()
6.6.4. Метод is_remote()
6.6.5. Метод _object_name()
6.6.6. Метод _repositoryid()
6.6.7. Методы работы с Policy (часть QoS)
6.6.8. Метод _ref_count() (только для C++)
6.6.9. Метод interface_name() (только для C++)
6.6.10. Методы Type_info () и _desc() (только для C++)
6.6.11. Метод _clone () (только для C++)
6.6.12. Метод _orb () (только для Java)
6.7. Методы получения объектных ссылок
6.7.1. Стандартные способы CORBA
6.7.2. Расширения для VisiBroker
6.7.3. Использование smart agent для получения объектных ссылок
6.8. Метод __narrow()
6.9. Утилита PrintIOR
Глава 7. Объекты и объектный адаптер РОА
7.1. Серванты
7.2. Объекты CORBA и их серванты
7.3. Объекты на стороне сервера
7.4. Основные обязанности РОА
7.5. Структура РОА
7.5.1. Active Object Map
7.5.2. Servant Manager
7.6. Иерархия РОА
7.6.1. RootPOA
7.6.2. Дочерние РОА
7.7. Опции (Policies) РОА
7.7.1. Thread Policy
7.7.2. Lifespan Policy
7.7.3. Object Id Uniqueness Policy
7.7.4. Id Assignment Policy
7.7.5. Servant Retention Policy
7.7.6. Request Processing Policy
7.7.7. Implicit Activation Policy
7.7.8. Bind Support Policy (только для VisiBroker)
7.7.9. Server Engine Policy (только для VisiBroker)
7.8. IDL-Интерфейс POA
7.8.1. Операции создания и поиска РОА
7.8.2. Операция уничтожения РОА
7.8.3. Фабрики объектов типа Policy
7.8.4. Операции регистрации менеджеров сервантов и Default-менеджера
7.8.5. Операции активизации и деактивизации CORBA-объектов
7.8.6. Операции создания CORBA-объектов
7.8.7. Операции преобразования
7.9. ServantActivator
7.10. ServantLocator
7.11. Default Servant
7.12. Интерфейс POAManager
7.13. Интерфейс Adapter Activator
7.14. Интерфейс Current
7.15. "Сборка мусора" в распределенных системах
Глава 8. Многопоточность
8.1. Модели управления потоками VisiBroker
8.1.1. Модель Thread pooling
8.1.2. Модель Thread-per-session
8.2. Управление соединениями
8.3. Средства синхронизации VisiBroker для C++
8.3.1. Мьютексы
8.3.2. Классы VISRWLock, VISRLock_var и VISWLock_var
8.3.3. Класс VISThread
9.1. Что такое репозитарий интерфейсов
9.2. Иерархия интерфейсов для IR
9.2.1. Интерфейсы IR
9.2.2. Иерархия содержания
9.2.3. Иерархия наследования
9.3. Создание репозитариев интерфейсов
9.4. Просмотр информации в репозитариях интерфейсов
9.4.1. Пример отображения информации из IR на C++
9.4.2. Пример отображения информации из IR на Java
9.5. Занесение информации в репозитарий интерфейсов
9.6. Доступ к требуемому репозитарию интерфейсов
9.6.1. Присоединение к репозитарию интерфейсов
9.6.2. Получение информации об интерфейсах по объектной ссылке
Глава 10. Репозитарии реализаций
10.1. Установка связи с серверным объектом по объектной ссылке
10.1.1. Прямая привязка
10.1.2. Косвенная привязка
10.2. Информация в репозитарии реализаций
10.3. Взаимодействие серверов приложений и репозитариев реализаций
10.4. Последовательность действий при установке связи
10.5. VisiBroker ОАО
10.6. Утилиты для взаимодействия с ОАО
10.6.1. Регистрация объектов в ОАО
10.6.2. Отмена регистрации объектов в ОАО
10.6.3. Получение информации из ОАО
10.7. IDL-объявления для ОАО
10.8. Взаимодействие с ОАО из программ
10.8.1. Использование C++
10.8.2. Использование Java
Глава 11. Динамическое взаимодействие клиентов и серверов
11.1. Какая информация необходима для использования DII/DSI
11.2. Некоторые IDL-типы, используемые при работе с DII/DSI
11.2.1. NamedValue
11.2.2. NVList
11.2.3. Environment
11.2.4. Context
11.2.5. Интерфейс ExceptionList
11.3. ОН
11.3.1. Объект CORBA::Request
11.3.2. Отображение Request на C++
11.3.3. Отображение Request на Java
11.3.4. Создание объекта Request
11.3.5. Вызовы удаленных методов
11.4. DSI
11.4.1. Объект ServerRequest
11.4.2. Отображение ServerRequest на C++
11.4.3. Отображение ServerRequest на Java
11.4.4. Тип серванта
11.4.5. PortableServer::DynamicImplementation
11.4.6. CORBA::0ynamiclmplementation
Глава 12. Smart agents
12.1. Что такое smart agent
12.2. Взаимодействие smart agents, серверов и клиентов
12.2.1. Запуск smart agent
12.2.2. Взаимодействие smart agents друг с другом
12.2.3. Smart agents и серверные объекты
12.2.4. Smart agents и клиенты
12.2.5. Домены ORB.
12.3. Настройка параметров при использовании smart agents
12.3.1. Параметры, влияющие на поведение smart agents
12.3.2. Способы настройки параметров
12.3.3. Взаимодействие в объединении локальных сетей
12.3.4. Использование multihomed-хостов
12.4. Утилиты osfind и VisiBroker Console
12.5. Распределение нагрузки между серверами
12.6. Обеспечение устойчивости к сбоям
12.7. Location Service
12.7.1. IDL для Location Service
12.7.2. Получение доступа к Location Service
12.7.3. Интерфейс Agent
12.7.4. Триггеры сервиса поиска
Глава 13. Сервисы именования CORBA
13.1. Концепция Naming Service
13.2. Основные понятия
13.2.1. Представление имен
13.2.2. Связанное имя
13.2.3. Контекст имен
13.2.4. Начальный контекст имен
13.2.5. Иерархия контекстов
13.2.6. Разрешение имени
13.3. Интерфейсы Naming Service
13.3.1. Интерфейс NamingContext
13.3.2. Интерфейс BindingIterator
13.4. Создание экземпляра службы именования
13.5. Соединение с экземпляром службы именования
13.6. Федерация служб именования
13.7. Расширения, предлагаемые INS
13.7.1. Представление имен
13.7.2. Кластеры
13.7.3. Сохранение состояния
Глава 14. Callback-вызовы, сервисы событий и уведомлений
14.1. Callback-объекты при использовании CORBA
14.2. Сервис событий CORBA
14.2.1. Недостатки сервиса событий
14.2.2. Основные положения
14.2.3. Канал событий
14.2.4. Модели взаимодействия сервиса событий
14.2.5. Основные этапы создания приложения
14.2.6. Модуль CosEventComm
14.2.7. Модуль CosEventChannelAdmin
14.2.8. Понятие о типизированных событиях
14.3. Сервис уведомлений CORBA
14.4. Сервис сообщений CORBA
14.4.1. AMI
14.4.2. TII
14.5. Заключение
Глава 15. Сервис жизненного цикла
15.1. Модуль CosLifeCycle
15.1.1. "Фабрика" как формальная конструкция
15.1.2. Используемые IDL-типы
15.1.3. Интерфейс GenericFactory
15.1.4. Интерфейс FactoryFinder
15.1.5. Интерфейс LifeCycleObject
15.2. Модуль CosCompoundLifeCycle
15.3. Проблемы использования сервиса
15.4. Уничтожение CORBA-объектов
15.4.1. Основные положения
15.4.2. Уничтожение при явной активизации объектов
15.4.3. Уничтожение при использовании серванта по умолчанию
15.4.4. Уничтожение при использовании менеджера-активатора
15.4.5. Уничтожение при использовании менеджера-локатора
15.5. Заключение
Часть III. Создание простых приложений
Глава 16. Создание простейшего клиента и сервера
16.1. Общие замечания
16.2. Использование C++
16.2.1. Сервер
16.2.2. Клиент
16.3. Использование Java
16.3.1. Сервер
16.3.2. Клиент
16.4. Использование Delphi
16.4.1. Клиент
16.5. Заключение
Глава 17. Работа с РОА
17.1. Общие замечания по примерам программ
17.2. Использование C++
17.2.1. Явная активизация объекта
17.2.2. Явная активизация объекта с использованием счетчика ссылок
17.2.3. Использование менеджера-активатора
17.2.4. Использование менеджера-локатора
17.2.5. Использование серванта по умолчанию
17.2.6. Активизация объектного адаптера
17.2.7 Клиент
17.3. Использование Java
17.3.1. Явная активизация объекта
17.3.2. Использование менеджера-активатора
17.3.3. Использование менеджера-локатора
17.3.4. Использование серванта по умолчанию
17.3.5. Активизация объектного адаптера
17.3.6. Клиент
17.4. Заключение
Глава 18. Взаимодействие с репозитарием интерфейсов
18.1. Использование C++
18.2. Использование Java
18.3. Результат работы
Глава 19. Использование DII/DSI
19.1. Использование C++
19.1.1. Статический сервер
19.1.2. Статический клиент
19.1.3. DII-клиент
19.1.4. DSI-сервер
19.2. Использование Java
19.2.1. Статический сервер
19.2.2. Статический клиент
19.2.3. DII-клиент
19.2.4. DSI-сервер
19.3. Заключение
Глава 20. Использование сервиса именования CORBA
20.1. Задача и IDL-объявления серверного объекта
20.2. Запуск Naming Service
20.3. Серверное приложение
20.3.1. C++
20.3.2. Java
20.3.3. Использование VisiBroker Console для создания графа имен
20.4. Клиентское приложение
20.4.1. C++/!
20.4.2. Java
20.5. Заключение
Глава 21. Использование сервиса событий
21.1. Создание канала событий с помощью утилит VisiBroker
21.2. Создание канала событий с использованием интерфейса
EventChannelFactory и классов VisiBroker
21.2.1. IDL-объявление интерфейса EventChannelFactory
21.2.2. Отображение интерфейса EventChannelFactory на C++
21.2.3. Отображение интерфейса EventChannelFactory на Java
21.2.4. Создание объекта типа EventChannelFactory
21.3. Присоединение к каналу событий
21.4. Пример использования push-модели
21.4.1. Применение C++
21.4.2. Применение Java и
21.5. Заключение
Используемая литература
Алфавитный указатель
Начало
Краткое содержание
Предисловие
Введение
Об авторе
Компакт-диск
Заказать книгу в магазине "Мистраль"
|
|