Re[13]: Универсальный маршалинг
От: AndrewJD США  
Дата: 19.07.06 13:12
Оценка:
Здравствуйте, Аноним, Вы писали:

AJD>>В чем проблема создать прокси?


А>если проблемы нет, означает что Вы можете сейчас сесть и в черновую накатать код, который осуществляетсяуниверсальный маршалинг Можете? Если да, поделитесь идеями как. Я например не могу, поэтому спрашиваю.


Прокси создать довольно просто. По описанию из библиотеки типов типов налету создадим струтктуру которая будет бинарно идентична требуемому интерфейсу и отдаем клиенту.
"For every complex problem, there is a solution that is simple, neat,
and wrong."
Re[14]: Универсальный маршалинг
От: Аноним  
Дата: 19.07.06 13:33
Оценка:
Здравствуйте, AndrewJD, Вы писали:

AJD>Здравствуйте, Аноним, Вы писали:


AJD>>>В чем проблема создать прокси?


А>>если проблемы нет, означает что Вы можете сейчас сесть и в черновую накатать код, который осуществляетсяуниверсальный маршалинг Можете? Если да, поделитесь идеями как. Я например не могу, поэтому спрашиваю.


AJD>Прокси создать довольно просто. По описанию из библиотеки типов типов налету создадим струтктуру которая будет бинарно идентична требуемому интерфейсу и отдаем клиенту.


налету гененить код — реализации методов прокси — неслабая задача.
Re[15]: Универсальный маршалинг
От: AndrewJD США  
Дата: 19.07.06 15:03
Оценка:
Здравствуйте, Аноним, Вы писали:

AJD>>Прокси создать довольно просто. По описанию из библиотеки типов типов налету создадим струтктуру которая будет бинарно идентична требуемому интерфейсу и отдаем клиенту.


А>налету гененить код — реализации методов прокси — неслабая задача.


Это почему же? К тому же код методов не генериться, а только заполняется поля структура размером в твой кастомный интерфейс. Причем для каждого метода устанавливается один и тот же обработчик.

Занимается этим rpcrt4.dll
"For every complex problem, there is a solution that is simple, neat,
and wrong."
Re[16]: Универсальный маршалинг
От: Аноним  
Дата: 19.07.06 17:58
Оценка:
Здравствуйте, AndrewJD, Вы писали:

AJD>Это почему же? К тому же код методов не генериться, а только заполняется поля структура размером в твой кастомный интерфейс. Причем для каждого метода устанавливается один и тот же обработчик.


AJD>Занимается этим rpcrt4.dll


ну если обработчик один и он по typelib узнаёт скока параметров снять со стека для формирвания rpc запроса то в принципе вполне реально...
Re: Универсальный маршалинг
От: GSD  
Дата: 20.07.06 12:43
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Рзбираясь с архитектурой возник следующий вопросик... В случае стандартного маршалинга компилятор MIDL генерит проксю/заглушку которая является обьъектом с поддержкой маршалирумого интерфейса. Соответственно для создания прокси активируется объект с IID прокси и объект заглушки, которые живут в этой dll. Тут всё понятно. Непонятно каким образом осуществляется маршалинг через универсальный механизм автоматизации когда для любого объекта используется одна и таже универсальная прокся/заглушка. Если вызов осуществляется через диспатч, то понятно что объект с поддержкой iDispatch зашит в универсальную dll, а если выхов идёт через кастом интерфейс или в качесте параметров передаются кастомные интерфейсы то как всё работает?


а не пробовали интересоваться стандартной реализацией IDispath? Тоже все работает волшебным образом.
Re[2]: Универсальный маршалинг
От: Аноним  
Дата: 20.07.06 12:48
Оценка:
Здравствуйте, GSD, Вы писали:

GSD>Здравствуйте, Аноним, Вы писали:


А>>Рзбираясь с архитектурой возник следующий вопросик... В случае стандартного маршалинга компилятор MIDL генерит проксю/заглушку которая является обьъектом с поддержкой маршалирумого интерфейса. Соответственно для создания прокси активируется объект с IID прокси и объект заглушки, которые живут в этой dll. Тут всё понятно. Непонятно каким образом осуществляется маршалинг через универсальный механизм автоматизации когда для любого объекта используется одна и таже универсальная прокся/заглушка. Если вызов осуществляется через диспатч, то понятно что объект с поддержкой iDispatch зашит в универсальную dll, а если выхов идёт через кастом интерфейс или в качесте параметров передаются кастомные интерфейсы то как всё работает?


GSD>а не пробовали интересоваться стандартной реализацией IDispath? Тоже все работает волшебным образом.


Стандартной нет, есть та что зашита в ATL — там по сути всё делегируется к ITypeLib
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.