Есть ли WCF, эквивалентный дескрипторам контекста RPC? - PullRequest
0 голосов
/ 03 июня 2009

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

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

См. Раздел «Контекстные маркеры»

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

1 Ответ

1 голос
/ 05 июня 2009

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

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

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

...