現在取り組んでいるプロジェクトのデザイン候補を考え出そうとしています。そのクライアント インターフェイスは、パブリック メソッドとコールバックを公開する WCF サービスに基づいています。リクエストは、計算や操作などを実行する C++ ライブラリ (boost を使用する) にルーティングされます。
現在のスキームは、IPC を介して別のネイティブ C++ プロセスと通信する WCF サービスに基づいています。
もう少し簡単にするために、ここでは混合モードにすることをお勧めします (つまり、ネイティブ C++ レイヤーをロードする単一の .NET プロセスを持ち、ほとんどの場合、非常に薄い C++/CLI レイヤーを介して通信します)。 . 主な懸念事項は、ガベージ コレクションまたはその他の .NET の側面が、プロセスのアンマネージ C++ 部分のパフォーマンスを妨げるかどうかです。
セーフ ポイントと GC ヘルパー メソッド (KeepAlive() など) の概念を調べ始めましたが、これやベンチマークに関する直接的な議論は見つかりませんでした。私がこれまでに理解していることから、安全なポイントの 1 つは、スレッドが管理されていないコードを実行している場合であり、この場合、ガベージ コレクションはクリーンアップを実行するためにスレッドを一時停止しません(これは正しいですか?)。
私が抱えている主な質問は、これらの 2 種類のコードを同じプロセスで実行する場合と、別々のプロセスを実行する場合のネイティブ側でパフォーマンスの問題があることだと思います。