C# で「out of proc」COM サーバーを実装するには何をする必要がありますか?

StackOverflow https://stackoverflow.com/questions/30653

  •  09-06-2019
  •  | 
  •  

質問

C#で書かれた「out of proc」COMサーバーを実装しようとしています。どうすればいいでしょうか?

.NET ランタイムをメイン プロセス領域にロードできないため、C# コードをメイン C++ アプリケーションから「プロセス外」にする必要があります。

なぜ?:
私の C++ コードは、多くの異なる顧客 EXE にロードされる DLL 内にあり、その一部は異なるバージョンの .NET ランタイムを使用します。1 つのプロセスにロードできるランタイムは 1 つだけなので、C# コードを別のプロセスに配置するのが最善の策のようです。

役に立ちましたか?

解決

System.EnterpriseServices.ServicedComponent を使用して COM+ コンポーネントを作成できます。その結果、プロセス外およびプロセス内 (クライアント) コンポーネントのアクティブ化を作成できるほか、プーリング、リモート処理、Windows サービスとしての実行などの COM+ の利点をすべて利用できるようになります。

他のヒント

ここ 可能であることがわかりますが、exe はライブラリとしてロードされ、exe のように独自のプロセスで起動されません。それがあなたにとって問題かどうかはわかりませんが?また、実際のアウトプロセス com サーバーのように動作させたい場合に考えられる解決策もいくつか含まれています。ただし、別のプロセス間通信の方法を使用した方がよい場合があります。.Net リモーティングのような。

これはお勧めできません , ただし、C# ライブラリの COM 呼び出し可能なラッパーを作成してから、C# ライブラリへの呼び出しを委任する VB6 ActiveX exe プロジェクトを作成することもできます。

.net ランタイムをプロセス領域にロードできないのはなぜですか?.net ランタイムをホストし、COM を使用して .net を呼び出すことができます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top