Господа! Не сможете ли подсказать, существуют ли наборы стандартных интефейсов для выполнения маршаллинга? Мне необходимо упаковать структуру, содержащую указатели на структуры, в двоичный образ. Есть информация, что такое возможно, но где искать не знаю...
Ведь в RPC существует такой стандартный механизм.
Здравствуйте Сергеев Дмитрий Николаевич, вы писали:
СДН>Господа! Не сможете ли подсказать, существуют ли наборы стандартных интефейсов для выполнения маршаллинга? Мне необходимо упаковать структуру, содержащую указатели на структуры, в двоичный образ. Есть информация, что такое возможно, но где искать не знаю... СДН>Ведь в RPC существует такой стандартный механизм.
COM и использует RPC-механизмы для мршалинга. О том, какие конкретно функции использовать, можно глянуть у Дона Бокса в одной из его статей в MSDN Magazine: http://msdn.microsoft.com. Можно так же попытаться создать (COM-овский) стаб (например, по TypeInfo — CreateStubFromTypeInfo) и попробовать паковать через него. Все это барахло если и документировано, то очень слабо.
Но, чем лезть в такие дебри, не проще ли создать функции сериализации для своих структур вручную?
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте Сергеев Дмитрий Николаевич, вы писали:
СДН>Господа! Не сможете ли подсказать, существуют ли наборы стандартных интефейсов для выполнения маршаллинга? Мне необходимо упаковать структуру, содержащую указатели на структуры, в двоичный образ. Есть информация, что такое возможно, но где искать не знаю... СДН>Ведь в RPC существует такой стандартный механизм.
Нужно описать все интерфейсы и структуры данных на IDL, после чего можно
будет сгенерировать код proxy/stub с помощью MIDL компилятора.
СДН>Господа! Не сможете ли подсказать, существуют ли наборы стандартных интефейсов для выполнения маршаллинга? Мне необходимо упаковать структуру, содержащую указатели на структуры, в двоичный образ. Есть информация, что такое возможно, но где искать не знаю... СДН>Ведь в RPC существует такой стандартный механизм.
Мои скромные познания в COM мне говорят — не связывайся с маршалингом никогда, даже если очень надо. Всё, что угодно, толпа параметров, SafeArray, но только не маршолинг. Когда-нибудь, где-нибудь обязательно наступишь на грабли.
Если нам не помогут, то мы тоже никого не пощадим.
Здравствуйте Сергеев Дмитрий Николаевич, вы писали:
СДН>Господа! Не сможете ли подсказать, существуют ли наборы стандартных интефейсов для выполнения маршаллинга? Мне необходимо упаковать структуру, содержащую указатели на структуры, в двоичный образ. Есть информация, что такое возможно, но где искать не знаю... СДН>Ведь в RPC существует такой стандартный механизм.
Имеет смысл описать все структуры в IDL файле, чтобы MIDL смог сгенерировать proxy/stub. Это более надежный способ чем маршалить вручную.
Здравствуйте __omega, вы писали:
O>Имеет смысл описать все структуры в IDL файле, чтобы MIDL смог сгенерировать proxy/stub. Это более надежный способ чем маршалить вручную.
Хе. Если структуры в мидле описать (с гуидами), то proxy/stub и нафиг не нужен будет, только вопрос не про то. Вопрос о халявной сериализации данных.
Кстати в следующей версии ascLib должна появиться сериализация automation-совметимых структур (в том числе и масивов структур) с лубой вложеностью. Все в исходниках. Захадите к нам на сайт через 2-4 дедельки и качайте.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
VD>Хе. Если структуры в мидле описать (с гуидами), то proxy/stub и нафиг не нужен будет, только вопрос не про то. Вопрос о халявной сериализации данных.
Если челу нужно передать структуры из указателей на другие структуры, то необязательно сильно изварщаться :)
Если к вопросу подойти с теоретической точки зрения, то можно начать со статьи на этом сайте про маршалинг и дальше углубляться в MSDN.. но на моей практике неплохо показали себя и тот же SafeArray, например
а все "углубления" показали что писать маршалинг ручками обойдется дороже
VD>Кстати в следующей версии ascLib должна появиться сериализация automation-совметимых структур (в том числе и масивов структур) с лубой вложеностью. Все в исходниках. Захадите к нам на сайт через 2-4 дедельки и качайте.
Здравствуйте __omega, вы писали:
O>Здравствуйте VladD2, вы писали:
O>Если челу нужно передать структуры из указателей на другие структуры, то необязательно сильно изварщаться :)
Я еще раз повторяю вопрос не про маршалинг, а "о халявной сериализации данных". Сериализация не только для маршалинга нужна она еще, например, при записи в файл может понадобится.
O>Если к вопросу подойти с теоретической точки зрения, то можно начать со статьи на этом сайте про маршалинг и дальше углубляться в MSDN.. но на моей практике неплохо показали себя и тот же SafeArray, например
Статью пр маршалинг я не читал. Я ее писал :).
В SafeArray это здорово, но структура удобней и компактней чем SafeArray(вариантов). К стати в SafeArray и структуру можно записать.
O>а все "углубления" показали что писать маршалинг ручками обойдется дороже.
Он не спрашивал как "писать маршалинг ручками", он спрошивал: "Мне необходимо упаковать структуру, содержащую указатели на структуры, в двоичный образ...".
VD>>Кстати в следующей версии ascLib должна появиться сериализация automation-совметимых структур (в том числе и масивов структур) с лубой вложеностью. Все в исходниках. Захадите к нам на сайт через 2-4 дедельки и качайте.
O>а вот уже интересно! посмотрю
Кстати SafeArray-и любой сложности и любой вложенности (кроме структур) там уже сериализуются.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте __omega, вы писали:
VD>>Кстати в следующей версии ascLib должна появиться сериализация automation-совметимых структур (в том числе и масивов структур) с лубой вложеностью. Все в исходниках. Захадите к нам на сайт через 2-4 дедельки и качайте.
O>а вот уже интересно! посмотрю
1. Упрошено создание коллекций подробнее см. статью Пример создания коллекции именованных COM-объектов (http://www.optim.ru/cs/2001/2/COMCollections/COMCollections.asp)
2. В классы ascVariant и ascSafeArray Добавлена поддержка записи в IStream состояния структур. Теперь ascLib поддерживает запись в IStream всех automation-совметимых типов.
3. Упростилась поддержка WTL. Теперь подключение к проекту ascLib одинаково как для ATL- так и для WTL-проектов.
4. К ascLib Добавлена отладочная DLL. Она позволяет переключать (из отладчика) режим "прерывания при возникновении ошибки". Если этот режим включен, то любой макрос возврата ошибки (ASC_RETxxx), например, ASC_RETURN_FAILED будет вызывать ASSERT-диалог. Это позволяет находить глубоко вложенные ошибки. Описание смотри в ascLib.h (функцИЮ ascSetDebugAssert).
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Ага, это точно что скромные познания так говорят
Маршаллинг дело хоть и сложное, но для взаимодействия между компами вещь незаменимая.
А на грабли можно и в Hello World наступить — добавил "f", чуть местами перепутал и уже не "Hello World", а "World of Hell"...
VD>Я еще раз повторяю вопрос не про маршалинг, а "о халявной сериализации данных". Сериализация не только для маршалинга нужна она еще, например, при записи в файл может понадобится.
руктур) там уже сериализуются.
Отмаршалится можно в стрим, потом стрим слить в файл. Потом из файла того же наполнить стрим и демарш сделать.