2009-06-03 5 views
0

Я обновляю старую службу C++ для использования WCF вместо RPC, и возникает вопрос, какой тип использовать при отправке и получении дескриптора (HANDLE, void * .. и т. Д.). В обновленной службе я в настоящее время использую IntPtr, но это не работает при переходе от 64-разрядной версии службы к 32-разрядной версии. IntPtr не может десериализоваться, потому что внутренне это просто пустота *, которая будет отличаться в зависимости от среды, в которой вы запускаете.Есть ли эквивалент WCF для дескрипторов контекста RPC?

Это решает проблему, потому что инфраструктура RPC никогда не отправляет значение дескриптора, а скорее GUID, который ссылается на ручка. Этот процесс описан в следующей статье:

See Context handles section

Я ищу в WCF, эквивалентный эту функциональность. Я мог бы написать аналогичную логику на службе, чтобы сделать это, или даже просто изменить IntPtr на Int64, но я надеюсь, что есть что-то похожее на RPC-способ.

ответ

1

Я рекомендую вам перепроектировать любой код, подобный этому. Исходная причина прохождения ручек уже не может быть действительной.

Кроме того, я предполагаю, что вы передавали ручки между собственными клиентами и серверами, но с WCF вы будете работать с управляемым кодом. Каким будет управляемый код с одной стороны с «ручкой» от другого? Например, может возникнуть больше смысла посылать путь к файлу с другой стороны и разрешить другой стороне открывать файл, а не передавать дескриптор файла.

Этот код был вероятно создан в то время, когда RPC не была старой. Это говорит о том, что остальная часть его также была разработана с использованием современных технологий для RPC. Вполне вероятно, что все приложение, возможно, потребуется перестроить для современного мира. В этой редизайне вы, скорее всего, будете использовать WCF для того, чтобы делать то же самое вид вещи, который в настоящее время выполняется с использованием RPC; но это будет не один к одному.

 Смежные вопросы

  • Нет связанных вопросов^_^