2009-06-03 7 views
0

RPCの代わりにWCFを使用するように古いC++サービスを更新しています。ハンドル(HANDLE、void * ..など)を送受信するときに使用するタイプに関する問題があります。更新されたサービスでは、現在IntPtrを使用していますが、サービスの64ビットバージョンから32ビットバージョンに移行するときには機能しません。 IntPtrは内部的にはデシリアライズできません。実行する環境によって異なります。RPCコンテキストハンドルに相当するWCFはありますか?

RPCインフラストラクチャは実際にはハンドル値を送信しないため、問題を解決します。ハンドル。このプロセスは、以下の資料に記載されている:私はこの機能にWCFと同等を探しています

See Context handles section

。これを行うために、私自身も同様のロジックをサービスに書くことができます。IntPtrをInt64に変更することもできますが、RPCのようなものがあることを期待しています。

答えて

1

このようなコードを再設計することをおすすめします。ハンドルを渡す元の理由はもはや有効ではないかもしれません。

また、ネイティブクライアントとサーバー間でハンドルを渡していたと思われますが、WCFではマネージコードを扱うことになります。一方のマネージコードは、他方のマネージコードとは何をしていますか?たとえば、ファイルハンドルを渡すのではなく、相手側にファイルパスを送信し、相手側にファイルを開くようにするのがより理にかなっています。

このコードは、RPCが古いテクノロジではないときに作成された可能性があります。これは残りの部分もRPCと同じ技術で設計されていることを示しています。現代の世界では、アプリケーション全体を再設計する必要があるかもしれません。その再設計では、WCFを使ってRPCを使って現在行われていることを種のと同じようにするでしょう。それは1対1のマッチではありません。