| [Домашняя страничка][Резюме][Фотоальбом][Диплом][Научные статьи] | |
|
|
|
3.3. Distributed Component Object Model (DCOM) |
|
Содержание 3-го вопроса Стандарт Component Object Model (СОМ) с самого начала разрабатывалась с учетом поддержки распределенных систем, однако ее первоначальная реализация могла работать только на одном компьютере. Объекты СОМ могли быть реализованы в DLL или в отдельном процессе, исполняемом на той же машине, что и их клиент, но не могли располагаться на других машинах в вычислительной сети. Эта
ситуация изменилась с появлением распределенной СОМ
(Distributed СОМ — DCOM). Теперь объекты
СОМ могут предоставлять свои сервисы и
клиентам на других машинах (Рис.3.5.). Рис. 3.5. Распределенная СОМ. Для
достижения этого DCOM использует вызов
удаленной процедуры (RPC). При
использовании RPC клиент выполняет нечто
похожее на локальный вызов компонента,
но на самом деле вызов обрабатывается
компонентом на другой машине сети. В DCOM
также включена поддержка средств
контроля доступа (контроль за тем,
какими клиентами может использоваться
данный объект), а также возможность
указания, на какой машине должен быть
создан объект. Сервисы DCOM можно
использовать для создания защищенных
распределенных приложений СОМ. DCOM позволяет клиенту создавать и использовать объекты как на удаленных системах, так и на локальной. Более того, клиент может даже не осознавать различия между этими двумя случаями. Подобно
тому как клиенты СОМ имеют прозрачный
доступ к объектам в динамических
библиотеках, локальных процессах, DCOM
обеспечивает прозрачный доступ к
объектам в удаленных процессах.
Фактически самое трудное в достижении
подобной прозрачности — это обеспечить
взаимодействие объектов, исполняющихся
в разных процессах независимо от того,
выполняются эти процессы на одной
машине или нет. В этом смысле, с точки
зрения проектирования, DCOM — довольно
незначительное расширение оригинальной
СОМ. Возможность
запускать удаленные объекты и вызывать
их методы - важное достижение, но
требуется большее. В частности, нужен
способ контроля за тем, кто имеет право
создавать объекты на данной машине, и
обеспечение безопасного доступа к этим
объектам по сети, которая может кишеть
потенциальными врагами. С этой целью в
основу DCOM положен набор сервисов
контроля доступа Приложения (включая
программы, созданные до DCOM) могут
использовать DCOM и работать вполне
безопасно без добавления какого-либо
кода, связанного с защитой. С другой
стороны, приложения, знающие о новых
средствах DCOM контроля доступа, могут
задействовать их явно. 3.3.1.
Создание удаленного объекта Сервисы
создания объектов — одни из важнейших
сервисов предоставляемых СОМ. Клиенты
обычно создают объекты, вызывая
библиотеку СОМ или через моникеры. Эти
подходы работают и в DCOM, хотя и с
некоторыми новыми особенностями. 3.3.1.1.
Использование CoCreatelnstance Независимо от того, где исполняется объект, клиент обычно создает его и затем получает указатели на необходимые интерфейс. Клиент
может создать объект на удаленной
машине, вызвав ту же самую функцию, т.е.
клиенту даже не требуется знать, что
объект выполняется на другом компьютере.
Чтобы создать удаленный объект, клиент
вызывает CoCreatelnstance, как обычно, передавая
CLSID вместе c IID, указывающим первый,
интерфейс, указатель на который ему
нужен. Однако для удаленного объекта
необходимо задать дополнительный
элемент — машину, на которой он должен
быть создан. Для
объекта, создаваемого на той же машине,
системный реестр отображает CLSID в имя DLL
или исполняемого файла, который должен
быть загружен для данного класса. А при
создании объекта на удаленной машине
системный реестр может отображать
CLSID в имя машины, на которой этот объект
должен создаваться. Для создания
удаленного объекта устанавливается
связь с удаленной машиной, в ее реестре
отыскивается данный CLSID, и на этой
удаленной машине запускается
соответствующий сервер. Если удаленный
объект реализован в DLL, то запускается
суррогатный процесс, просто загружающий
DLL. Иначе запускается процесс объекта,
как и в случае локального сервера. Вот
несколько упрощенная картина создания
удаленного объекта с, помощью CoCreateInstance.
На Рис. 3.6. клиент
вызывает библиотеку СОМ для создания
объекта с CLSID X, запрашивая указатель на
интерфейс А этого объекта. Запись в
реестре для CLSID Х на клиентской машине
содержит имя другого компьютера (в
данном примере elvis.acme.com). Рис. 3.6. Создание удаленного объекта с помощью CoCreatelnstance. DCOM
предоставляет несколько вариантов
идентификации удаленных машин в
зависимости от сетевых протоколов,
применяемых для доступа к удаленной
системе. DCOM поддерживает доменные имена,
используемые TCP/IP (типа elvis.acme.com), а также
адреса IP (Internet Protocol), имена, NetBIOS и имена,
применяемые NetWare IPX/SPX. Независимо от
способа идентификации устанавливается
связь с удаленной машиной, и там
создается объект с учетом информации о
CLSID Х реестра удаленной машины. Возможность
удаленного создания объекта СОМ —
первое, что нужно для работы в
распределенной среде. 3.3.2.
Объектный RPC После запуска удаленного объекта и получения указателей его интерфейсов клиент может вызывать методы этих интерфейсов. Вызов метода объекта "в процессе", по сути, означает непосредственное обращение к нему через виртуальную таблицу. Обращение к методу объекта, реализованного в локальном сервере, требуете участия заместителя, заглушки и некоторого механизма коммуникаций между процессами.
Вызов
метода объекта, реализованного в
удаленном сервере, также использует
заместитель и заглушку, но в данном
случае клиенту необходимо выполнить
вызов удаленной процедуры (RPC) сервера. Объектный RPC (Object RPC) —
посылают по сети информацию в том же
формате, что и DCE RPC. Хотя ORPC включает ряд
новых соглашений по взаимодействию
клиента с сервером, добавляет несколько
новых типов данных и использует
некоторые поля пакета особым образом,
сама структура пакетов осталась прежней. MS
RPC на самом деле включают в себя два
разных протокола, которые
поддерживаются и ORPC. Один из них — CN или
СО — используется поверх протоколов с
установлением логических соединений
(connection-oriented protocols), таких как TCP (Transmission
Control Protocol). Поскольку CN подразумевает,
что нижележащий протокол гарантирует
надежную доставку данных, то он не
проверяет точность передачи. Другой
протокол — DG или CL — используется
поверх транспорта без установления
логического соединения (также
называемого протоколом дейтаграмм),
такого как UDP (User Datagram Protocol). Рассматривая
нижележащий протокол как совершенно
ненадежный, DG реализует собственные
механизмы, гарантирующие надежную
доставку данных. Для выдающего запрос
клиента оба протокола выглядят
совершенно одинаково, хотя нижележащие
транспортные протоколы ведут себя
абсолютно по-разному. Эти различия
скрываются соответствующим протоколом
RPC. Независимо
от используемого протокола клиент
должен обладать информацией
связывания (binding information) с пунктом
назначения, прежде чем он выполнит вызов
ORPC. В составе этой информации обычно
сетевой адрес удаленной машины (например,
адрес IP) и указание, какая комбинация
протоколов должна использоваться (например,
CL RPC и UDP). Информация связывания может
включать точку назначения транспорта
(transport endpoint) — ее часто называют портом,
— задающую конкретный процесс на
удаленной машине. Информацию связывания
удобно представлять как строковое связывание (string binding) —
символьной строкой, содержащей всю
необходимую информацию. Информацию
связывания с данной удаленной системой
клиент может получить по-разному.
Например, имя машины, передаваемое
функции CoCreateInstanceEx, может быть
использовано для определения по крайней
мере части информации связывания. Кроме
того, возможна передача информации
связывания (или ссылки на нее) от одного
объекта другому. 3.3.3.
Обеспечение безопасного доступа к
удаленному объекту Объектный
RPC предоставляет клиентам способ
создания удаленных объектов и вызова их
методов. Но возможность доступа к
объектам на других системах повышает
риск создания или использования таких
объектов процессами или личностями, не
имеющими соответствующих прав. Для
минимизации подобного риска DCOM
определяет стандартный способ доступа к
сервисам защиты и их использования. Здесь
имеют место две проблемы. Первая
заключается в контроле над тем, кто
имеет право запускать серверы различных
классов на данной удаленной машине —
это сфера действия защиты
активизации (activation security). Вторая
проблема, состоящая в том, чтобы
гарантировать контроль прав на вызовы
клиентами методов уже исполняющихся
объектов, известна как защита вызовов (call
security). DCOM предоставляет решения
обеих проблем. 3.3.3.1. Защита
активизации Параметры
реестра машины в точности определяют,
кто имеет право запуска серверов на
данном компьютере. Более общая
установка разрешает или запрещает
удаленную активизацию вообще. Если она
отключена, ни один удаленный клиент не
сможет запускать серверы или
подсоединяться к какому-либо объекту на
данной машине. Возможно также
определение защиты активизации на
уровне класса, что позволяет
контролировать, какие удаленные клиенты
имеют право на запуск сервера
некоторого класса. Перечень имеющих
разрешение на это содержит список
управления доступом (access control list — ACL).
И наконец, к классам, для которых не
установлена защита активизации на
уровне класса, может применяться защита
активизации по умолчанию. 3.3.3.2. Защита
вызовов После
создания объект готов к приему вызовов
своих методов от клиентов. Когда
последние выполняются на других
компьютерах, можно с пользой
задействовать рад сервисов контроля
доступа. Вот самые важные: •
аутентификация
позволяет удостовериться, что Вы именно
тот, за кого себя выдаете. С помощью
аутентификации объект достоверно
определяет личность клиента. •
авторизация
позволяет определить, что клиент имеет
право делать. Для принятия подобного
решения объект может использовать любую
схему. Например, в Microsoft Windows NT объект
может воспользоваться встроенной
поддержкой ACL; •
целостность данных
гарантирует, что принятые по сети данные
не были изменены при пересылке. •
секретность данных
гарантирует, что пересылаемые по сети
данные не будут прочитаны при передаче. Интерфейсы
защиты вызовов DCOM определяют 2 основные
возможности: автоматическую
и поинтерфейсную защиты. В первом
случае клиентский или серверный процесс
устанавливает уровень защиты по
умолчанию для всех вызовов этого
процесса или вызовов, выполняемых им. Во
втором - разные установки защиты можно
задать для разных интерфейсов одного
объекта или для разных объектов. Можно
использовать и оба варианта
одновременно, установив значения по
умолчанию с помощью автоматической
защиты и выполнив затем тонкую
настройку используя поинтерфейсную
защиту. 3.3.3.3.
Автоматическая защита Будет
ли процесс клиентом, выдающим запросы,
или объектом, принимающим запросы, или и
тем и другим, он может задать значения по
умолчанию автоматической защиты
вызовом CoInitializeSecurity. Вызов этой функции
достаточно сложен, но позволяет
процессу быстро и полностью задать свои
требования по защите. 3.3.3.4.
Поинтерфейсная защита Автоматическая защита — грубый инструмент. Она определяет один набор параметров защиты для всего, что делает процесс, будь он клиентом или сервером. Автоматическая защита, кроме того, проста в использовании, и для многих приложений — это именно то, что нужно. Но не каждый процесс может обойтись одной автоматической защитой. Например, клиент может пожелать использовать разные уровни защиты для вызовов разных объектов или даже разных интерфейсов одного объекта. Серверу, реализующему несколько объектов, может потребоваться применять к каждому из них или к каждому из их интерфейсов особые схемы авторизации. Поинтерфейсная защита обеспечивает поддержку подобных тонких разграничении. [Содержание]
|
|
[Диплом индекс][Доклад][Реферат Рус][Реферат Укр][Abstract] |
|
| Copyright (c) 1998-2001, Alexandr S. Lukichov
|
|