Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Маршалинг

Межпроцессорное взаимодействие

То, что клиент имеет ссылку на бинарный интерфейс равносильно следующему:

1. В первом типе серверов (in-proc) это означает, что клиент имеет указатель, указывающий непосредственно на интерфейс объекта (можно видеть, что вызов будет довольно эффективный по скорости быстродействия компонентов).

2. Во втором типе серверов (local) это означает, что необходим механизм межпроцессорной синхронизации, так как указатель ссылается не на интерфейс объекта, а на его заместитель – proxy, находящийся в процессе клиента.

Заместитель – COM объект, предоставляющий те же самые интерфейсы, что и объект на локальном сервере. Для корректной межпроцессорной синхронизации необходимо:

1. Упаковать параметры для пересылки;

2. Передать запрос и параметры в другой процесс (механизм LPC).

На локальном сервере происходит, во-первых, распаковка параметров, и, во-вторых, вызов метода объекта.

Необходимо отметить то, что данный механизм работает медленнее по сравнению с первым типом серверов из-за процессов упаковки-распаковки (маршалинга, демаршалинга).

3. В третьем типе серверов (remote) это означает то же самое, что и у второго типа, только в качестве среды передачи параметров и запроса выступает уже не локальный компьютер, а среда DCOM.

Как уже упоминалось ранее, для любого типа сервера, для клиента полная прозрачность механизма COM.

Marshaling – это процесс запаковки и посылки вызовов (методов COM-интерфейса) через границу процесса (или потоков одного и того же приложения). COM поддерживает два вида маршалинга: «стандартный маршалинг» и «ручной маршалинг». Первый подразумевает практически автоматическую поддержку со стороны средств разработки. Второй же дает максимальную гибкость и позволяет заменить реализацию процесса маршалинга на собственную.

В процессе маршалинга в другой контекст (возможно, удаленный) передаются данные, которые там распаковываются и преобразуются в вид, пригодный для использования. Указатели на эти данные помещаются в стек, и производится передача управления вызываемому/вызывающему коду. При этом в качестве данных могут быть переданы и указатели на другие интерфейсы (возможно, других объектов). Именно передача (маршалинг) интерфейсов нас и будет интересовать больше всего, так как именно при этом встает вопрос – «Какой тип и подтип маршалинга будет использовать переданный указатель на интерфейс?». «Маршалинг указателя на интерфейс» и «Маршалинг для интерфейса» (или просто маршалинг). Первый подразумевает установление связи между удаленным объектом и вызывающим апартаментом, а второй – комплекс мер по запаковке и посылке вызовов методов COM-интерфейса. Это очень важно! Зачем нужен маршалинг между процессами, понятно. Процессы в Win32 имеют разные адресные пространства, поэтому указатели на данные в другом процессе не имеют смысла даже в пределах одного компьютера, не говоря уже о разных. А зачем нужен маршалинг между потоками одного и того же процесса? Коротко на этот вопрос можно ответить так: для облегчения работы программистов не умеющих, не имеющих возможности (например, VB-программистов) или попросту не желающих писать потокобезопасный код. Если говорить точнее, то это связано с апартаментной моделью, принятой в COM.

<== предыдущая лекция | следующая лекция ==>
Взаимодействие апартаментов | Стандартный маршалинг
Поделиться с друзьями:


Дата добавления: 2014-01-20; Просмотров: 627; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.008 сек.