КнигоПровод.Ru28.03.2024

/ИТ-книги

Конструирование распределённых объектов. Методы и средства программирования интероперабельных объектов в архитектурах OMG/CORBA, Microsoft/COM и Java/RMI — Эммерих В.
Конструирование распределённых объектов. Методы и средства программирования интероперабельных объектов в архитектурах OMG/CORBA, Microsoft/COM и Java/RMI
Учебное издание
Эммерих В.
год издания — 2002, кол-во страниц — 510, ISBN — 5-03-003405-6, 0-471-98657-7, тираж — 3000, язык — русский, тип обложки — твёрд. 7БЦ, масса книги — 890 гр., издательство — Мир
серия — Лучший зарубежный учебник
цена: 1000.00 рубПоложить эту книгу в корзину
ENGINEERING DISTRIBUTED OBJECTS
Wolfgang Emmerich
University College London

John Wiley & Sons, Ltd 2000

Пер. с англ. Т. Ю. Москалева

Книга рекомендована методическим советом программистских кафедр факультета ВМиК МГУ в качестве университетского учебника по курсу «Распределённые объектные технологии»

Формат 70x100 1/16. Бумага офсетная. Печать офсетная
ключевые слова — corba, ejb, javabeans, rmi, uml, объектн, распределённ, java, c++

В книге английского автора представлен широкий спектр методов конструирования распределённых объектов. Сравниваются наиболее распространённые системы промежуточного слоя (CORBA, COM, Java/RMI). Показано, что объектно-ориентированный промежуточный слой обеспечивает прозрачность распределения как для пользователей, так и для прикладных программистов. Приводятся способы долговременного хранения объектов и средства сохранения и восстановления их состояния. Рассматриваются вопросы объединения нескольких объектных заявок в распределённую объектную транзакцию, обладающую свойствами ACID.

Для студентов и аспирантов, изучающих информационные технологии, а также для программистов и разработчиков распределённых систем, желающих более глубоко изучить методы конструирования распределённых объектов.


• Книга используется как учебник в 25 университетах на всех пяти континентах, а также для подготовки персонала крупных промышленных компаний
• Для описания объектов применяется Унифицированный язык моделирования (UML)
• Показано, что объектно-ориентированный промежуточный слой обеспечивает прозрачность распределения как для пользователей, так и для прикладных программистов
• Приводятся способы долговременного хранения объектов и средства сохранения и восстановления их состояния
• Показано, как с помощью сервисов безопасности можно предотвратить несанкционированное использование объектов и утечку информации из объектных заявок




Распределённые объектные технологии в течение последнего десятилетия достигли высокого уровня развития. Усилиями консорциума OMG, компаний Microsoft, Sun Microsystems и других созданы и продолжают быстро развиваться разнообразные архитектуры промежуточного слоя (middleware) поддержки распределённых объектных технологий (наиболее известными из них являются CORBA, COM, Java/RMI). В книгах, посвящённых указанным технологиям, рассматриваются отдельно взятые архитектуры, без попытки всестороннего сопоставления их. Более того, в них, как правило, обсуждаются особенности построения ядра той или иной архитектуры и их применения при распределённом программировании. Вместе с тем, при создании распределённых систем, помимо функций коммуникации и синхронизации объектов, обеспечиваемых ядром, требуются разнообразные службы конструирования распределённых объектов (сервисы), реализующие функции локализации объектов (именования и трейдинга), поддержки их жизненного цикла, обеспечения долговечности объектов, управления транзакциями в среде распределённых объектов, обеспечения защиты её функционирования. Эти функции являются теперь необходимой составляющей развитого промежуточного слоя.

Предлагаемая российскому читателю книга В Эммериха выгодно отличается от известных тем, что в ней сравниваются наиболее распространённые архитектуры промежуточного слоя (CORBA, COM, Java/RMI) и детально рассматривается роль сервисов, развитых в таких системах для конструирования распределённых объектов.

В книге показано, что роль промежуточного слоя, основанного на объектно-ориентированной парадигме, заключается в обеспечении максимально возможной прозрачности распределения как для пользователей, так и для прикладных программистов. Прозрачность рассматривается в различных аспектах в отношении доступа, локализации, миграции, репликации, одновременной работы, масштабируемости, производительности, отказов. Показаны различия между проектированием объектов, взаимодействующих локально, с использованием вызовов методов, и проектированием распределённых объектов.

Первая половина книги посвящена рассмотрению функций и роли ядра промежуточного слоя. Существенно, что при этом сравниваются объектные модели CORBA, СОМ, Java/RMI, а также различные компоненты архитектур, обеспечивающие выполнение объектных заявок, передаваемых между распределёнными объектами. Анализируются различия между статическими заявками, которые определяются при компиляции клиента, и динамическими заявками, определяемыми во время выполнения кода клиента. Определена роль интерфейсов динамических вызовов и примитивов рефлексии, необходимых для выполнения динамических заявок. Рассматриваются также способы реализации несинхронных заявок, анонимных заявок и заявок от одного клиента к множественным объектам-серверам.

Достоинством книги является использование в качестве нотации для описания различных аспектов объектов Унифицированного языка моделирования (UML). Это важно потому, что роль UML в стандартах OMG существенно возросла после введения в 2001 г. модели MDA (Model Driven Architecture).

Во второй половине книги подробно анализируются функции и роль сервисов, предоставляемых промежуточным слоем для конструирования распределённых объектов. Рассматриваются именование объектов и объектный трейдинг — два подхода, на которых основано определение местонахождения объектов. При изложении способов управления жизненным циклом распределённых объектов в книге показано, как можно запросить создание объектов на определённой машине, как выполняется миграция объектов по сети с одной машины на другую и как удаляются распределённые объекты.

Если у объектов есть внутреннее состояние, то оно должно быть сохранено в долговременной памяти при их деактивизации. Приводятся способы долговременного хранения объектов и то, каким образом разработчики объектов-серверов могут сохранять и восстанавливать их состояние при помощи соответствующего сервиса. Рассматриваются вопросы объединения нескольких объектных заявок в распределённую объектную транзакцию, обладающую свойствами ACID. Заявки в пределах транзакции выполняются изолированно от других одновременных транзакций, а после того, как транзакция завершится, гарантируется неизменность её результатов.

Сервисы безопасности объектов помогают разработчикам приложений и администраторам предотвращать несанкционированное использование объектов и утечку информации, содержащейся в объектных заявках. Рассматриваются способы аутентификации, контроля доступа, аудита и неопровержимости, применяемые при конструирования распределённых систем.

В книге излагается широкий спектр методов и средств конструирования объектов, необходимых при создании распределённых систем.

Книга написана дидактически последовательно. Функции промежуточного слоя иллюстрируются на многочисленных примерах — частях одного приложения, проходящего через всю книгу. Изначально книга планировалась как учебник для студентов старших курсов университетов. Полностью или частично её можно использовать в курсах, связанных с объектными технологиями, объектно-ориентированным программированием и проектированием распределённых систем. В частности, в МГУ планируется использование этой книги в качестве учебника по курсу «Распределённые объектные технологии» в Высшей компьютерной школе и магистратуре ВМК для подготовки специалистов повышенной квалификации по информационным технологиям.

Книга несомненно будет полезна для программистов и разработчиков распределённых систем, желающих более глубоко изучить методы конструирования распределённых объектов. Необходимой предпосылкой чтения книги является знакомство с языками программирования C++ и Java.

Широта спектра рассматриваемых в книге вопросов объясняет исключительное разнообразие используемой специальной терминологии. Коллектив, реализовавший перевод и редактирование книги, стремился к достижению компромисса между нахождением адекватных терминов информатики в русском языке и расширением его лексики. Ввиду сложности задачи и ограниченности времени работы, этот компромисс, возможно, не всегда является идеальным.

Предисловие редактора перевода
Л. А. Калиниченко

ОГЛАВЛЕНИЕ

Предисловие редактора перевода11
Предисловие14
Предисловие к русскому изданию19
От автора21
 
Часть I. Основные понятия23
 
Глава 1. Распределённые системы25
 
1.1. Что такое распределённая система?27
1.1.1. Составные части распределённой системы27
1.1.2. Сравнение централизованных и распределённых систем29
1.2. Примеры распределённых систем32
1.2.1. «Видео по требованию»32
1.2.2. Управление конструированием самолётов34
1.2.3. Информационная инфраструктура банка36
1.2.4. Распределённая система управления футбольной лигой39
1.3. Требования к распределённым системам40
1.3.1. Масштабируемость42
1.3.2. Открытость43
1.3.3. Неоднородность44
1.3.4. Доступ к ресурсам и их разделение45
1.3.5. Отказоустойчивость47
1.4. Прозрачность в распределённых системах48
1.4.1. Прозрачность доступа49
1.4.2. Прозрачность местонахождения50
1.4.3. Прозрачность миграции51
1.4.4. Прозрачность репликации51
1.4.5. Прозрачность одновременного выполнения53
1.4.6. Прозрачность масштабируемости54
1.4.7. Прозрачность производительности55
1.4.8. Прозрачность отказов56
Ключевые моменты58
Вопросы для самопроверки58
Дополнительная литература59
 
Глава 2. Проектирование распределённых объектов61
 
2.1. Эволюция объектной технологии63
2.2. UML-представления для проектирования распределённых объектов68
2.2.1. Диаграммы вариантов использования69
2.2.2. Диаграммы последовательностей70
2.2.3. Диаграммы классов72
2.2.4. Объектные диаграммы75
2.2.5. Диаграммы состояний77
2.3. Метамодель распределённых объектов79
2.3.1. Объекты80
2.3.2. Типы83
2.3.3. Заявки85
2.3.4. Исключения86
2.3.5. Подтипы и множественное наследование88
2.3.6. Полиморфизм90
2.4. Сравнение локальных и распределённых объектов91
2.4.1. Жизненный цикл92
2.4.2. Объектные ссылки93
2.4.3. Задержка заявки93
2.4.4. Активизация объектов95
2.4.5. Одновременное выполнение97
2.4.6. Связь98
2.4.7. Обработка ошибок99
2.4.8. Безопасность100
Ключевые моменты101
Вопросы для самопроверки102
Дополнительная литература103
 
Часть II. Промежуточный слой для управления
распределёнными объектами105
 
Глава 3. Принципы объектно-ориентированного промежуточного слоя107
 
3.1. Компьютерные сети109
3.1.1. Эталонная модель ISO/OSI109
3.1.2. Транспортный уровень111
3.2. Типы промежуточного слоя116
3.2.1. Транзакционно-ориентированный промежуточный слой118
3.2.2. Промежуточный слой ориентированный на посылку сообщений118
3.2.3. Удалённые вызовы процедур119
3.3. Объектно-ориентированный промежуточный слой124
3.3.1. Язык определения интерфейсов125
3.3.2. Реализация уровня представления126
3.3.3. Реализация уровня сессии126
3.4. Разработка с помощью объектно-ориентированного промежуточного
слоя129
3.4.1. Определение интерфейсов131
3.4.2. Генерация стабов133
3.4.3. Реализация объектов клиентов134
3.4.4. Реализация объектов-серверов136
3.4.5. Регистрация сервера138
Ключевые моменты139
Вопросы для самопроверки140
Дополнительная литература141
 
Глава 4. CORBA, СОМ и Java/RMI143
 
4.1. CORBA145
4.1.1. Метаобъектная модель и определение интерфейсов147
4.1.2. Архитектура155
4.2. СОМ157
4.2.1. Метаобъектная модель и определение интерфейсов159
4.2.2. Архитектура169
4.3. Java/RMI172
4.3.1. Метаобъектная модель и определение интерфейсов174
4.3.2. Архитектура182
Ключевые моменты185
Вопросы для самопроверки186
Дополнительная литература187
 
Глава 5. Устранение неоднородности189
 
5.1. Неоднородность языков программирования191
5.1.1. Примеры неоднородности192
5.1.2. Связывания с языками программирования195
5 2. Неоднородность промежуточного слоя202
5.2.1. Примеры неоднородности204
5.2.2. Интероперабельность205
5.2.3. Межсистемное взаимодействие213
5.3. Неоднородность представления данных217
5.3.1. Примеры неоднородности217
5.3.2. Разрешение на уровне представления220
5.3.3. Разрешение на прикладном уровне224
5.3.4. Разрешение по платформе231
Ключевые моменты233
Вопросы для самопроверки234
Дополнительная литература235
 
Глава 6. Динамические объектные заявки237
 
6.1. Мотивирующие примеры239
6.1.1. Объектный браузер239
6.1.2. Универсальные мосты уровня заявок240
6.2. Динамические вызовы241
6.2.1. Общие принципы241
6.2.2. Динамические вызовы в CORBA242
6.2.3. Интерфейс IDispatch в СОМ244
6.3. Рефлексия248
6.3.1. Общие принципы248
6.3.2. Репозиторий интерфейсов CORBA250
6.3.3. Библиотека типов СОМ255
6.3.4. Выводы257
6.4. Разработка универсальных приложений258
Ключевые моменты262
Вопросы для самопроверки263
Дополнительная литература263
 
Часть III. Общие проблемы разработки265
 
Глава 7. Расширенное взаимодействие распределённых объектов267
 
7.1. Синхронизация заявок269
7.1.1. Общие принципы269
7.1.2. Односторонние заявки271
7.1.3 Отсроченные синхронные заявки275
7.1.4. Асинхронные заявки277
7.2. Множественность заявок281
7.2.1. Групповая связь281
7.2.2. Множественные заявки285
7.3. Надёжность заявок290
7.3.1. Одиночные заявки290
7.3.2. Групповые и множественные заявки292
Ключевые моменты294
Вопросы для самопроверки295
Дополнительная литература295
 
Глава 8. Определение местонахождения распределённых объектов297
 
8.1. Именование объектов299
8.1.1. Принципы именования299
8.1.2. Служба именования CORBA305
8.1.3. Псевдонимы СОМ312
8.1.4. Реестр Java/RMI314
8.2. Объектный трейдинг319
8.2.1. Принципы объектного трейдинга320
8.2.2. Служба трейдинга CORBA326
Ключевые моменты329
Вопросы для самопроверки330
Дополнительная литература331
 
Глава 9. Жизненный цикл распределённых объектов333
 
9.1. Жизненный цикл объектов335
9.1.1. Создание распределённых объектов335
9.1.2. Миграция объектов на удалённые хосты342
9.1.3. Удаление объектов349
9.2. Составные объекты354
9.2.1. Моделирование композиции распределённых объектов355
9.2.2. Реализация композиции распределённых объектов356
9.3. Жизненный цикл составных объектов364
9.3.1. Жизненный цикл составного объекта с точки зрения
    разработчика клиент365
9.3.2. Жизненный цикл составного объекта с точки зрения
    разработчика сервера366
Ключевые моменты366
Вопросы для самопроверки368
Дополнительная литература369
 
Глава 10. Долговечность объектов371
 
10.1. Принципы долговременного хранения373
10.1.1. Объекты с внутренним состоянием и без него373
10.1.2. Прозрачность долговременного хранения374
10.1.3. Службы долговременного хранения376
10.2. Использование службы долговременного хранения CORBA380
10.2.1. Язык определения состояний службы долговременного хранения382
10.2.2. Связывания с языками программирования383
10.2.3. Интеграция с объектным адаптером385
10.2.4. Выводы388
10.3. Архитектура службы долговременного хранения388
10.3.1. Компоненты архитектуры и их взаимодействия389
10.3.2. Генерация компонентов архитектуры391
10.4. Технологии долговременного хранения данных392
10.4.1. Долговременное хранение в файловых системах393
10.4.2. Долговременное хранение в реляционных базах данных398
10.4.3. Долговременное хранение в объектных базах данных402
10.4.4. Сравнение технологий долговременного хранения405
Ключевые моменты406
Вопросы для самопроверки407
Дополнительная литература407
 
Глава 11. Распределённые объектные транзакции409
 
11.1. Принципы транзакций411
11.1.1. Основные понятия411
11.1.2. Операции транзакций416
11.1.3. Плоские и вложенные транзакции417
11.2. Управление одновременным выполнением418
11.2.1. Мотивация419
11.2.2. Двухфазное блокирование422
11.2.3. Тупики426
11.2.4. Иерархическое блокирование428
11.2.5. Служба управления одновременным выполнением CORBA431
11.2.6. Выводы433
11.3. Протокол двухфазной фиксации434
11.3.1. Роли объектов в распределённых транзакциях434
11.3.2. Двухфазная фиксация плоских транзакций435
11.3.3. Открытая обработка распределённых транзакций440
11.4. Службы распределённых объектных транзакций442
11.4.1. Служба транзакций CORBA442
11.4.2. Сервер транзакций Microsoft444
11.4.3. Транзакции в Java446
Ключевые моменты449
Вопросы для самопроверки450
Дополнительная литература450
 
Глава 12. Безопасность в распределённых системах453
 
12.1. Атаки на безопасность 455
12.1.1. Уязвимость распределённых систем455
12.1.2. Угрозы безопасности456
12.1.3. Методы атак458
12.1.4. Проникновение461
12.2. Шифрование463
12.2.1. Шифрование с секретным ключом464
12.2.2. Шифрование с открытым ключом465
12.2.3. Распространение ключей467
12.2.4. Выводы469
12.3. Службы безопасности более высокого уpoвня470
12.3.1. Межсетевые экраны470
12.3.2. Аутентификация471
12.3.3. Управление доступом473
12.3.4. Неопровержимость477
12.3.5. Аудит безопасности479
12.4. Службы безопасности в объектно-ориентированном промежуточном
слое480
12.4.1. Аутентификация481
12.4.2. Управление доступом482
12.4.3. Неопровержимость484
12.4.4. Аудит485
Ключевые моменты487
Вопросы для самопроверки488
Дополнительная литература489
 
Приложение. Полная реализация футбольного примера на CORBA IDL/C++491
Литература499
Предметный указатель506

Книги на ту же тему

  1. Spring 4 для профессионалов. — 4-е изд., Шефер К., Хо К., Харроп Р., 2015
  2. Электронный магазин на Java и XML (+CD-ROM), Брогден Б., Минник К., 2002
  3. Java сервлеты и JSP: сборник рецептов, Перри Б. У., 2005
  4. Средства визуального проектирования на Java, Чекмарев А., 1998
  5. Разработка программных проектов: на основе Rational Unified Process (RUP), Полис Г., Огастин Л., Лоу К., Мадхар Д., 2009
  6. UNIX. Профессиональное программирование. — 2-е изд., Стивенс Р., Раго С., 2007
  7. Современные языки и технологии параллельного программирования: Учебник, Гергель В. П., 2012

© 1913—2013 КнигоПровод.Ruhttp://knigoprovod.ru