質問
少し前に win32 コードで IPC を使用しました。[クリティカルセクション、イベント、セマフォ]
.NET環境のシーンはどうですか?利用可能なすべてのオプションと、いつ使用するか、そしてその理由を説明するチュートリアルはありますか?
解決
IPC における Microsoft の最新のものは次のとおりです。 Windows コミュニケーション財団. 。実際、下位レベル (tcp、upd、名前付きパイプなど) には新しいものは何もありませんが、WCF により IPC 開発が大幅に簡素化されます。
役立つリソース:
- WCF によるプロセス間通信 博士についてドブのポータル
- .NET Framework 3.5 の WCF 通信オプション
そしてもちろん WCF の MSDN
他のヒント
明らかな (WCF) とは別に、非常に優れた C#/CLR 用の ZeroMQ バインディングがあります。
http://www.zeromq.org/bindings:clr
WCF よりもはるかに少ないコードと構成で、メッセージ指向の IPC、パブリッシュ/サブスクライブ、その他のさまざまな戦略を実行します。
また、他のものよりも少なくとも 1 桁高速であり、低遅延の通信が必要な場合は遅延も少なくなります。
セマフォ、ロック、ミューテックスなどに関して。共有によるコミュニケーションではなく、コミュニケーションによる共有を行うと、従来のパラダイムよりも手間が大幅に軽減されます。
私は名前付きパイプか Unix ソケットを使用することが多いです (MS.NET と Mono のどちらをターゲットにしているかによって異なります。私はそれを抽象化するクラスを持っています)。これは使いやすく、移植性があり、アンマネージ コードと簡単に相互運用できるためです。 。とはいえ、マネージ コードのみを扱う場合は、WCF またはリモーティングを使用してください。Mono サポートが必要な場合は、WCF サポートがまだ提供されていないため、後者を使用してください。
ネットワーク経由の通信ではなくマシンドメインで使用する必要がある場合は、メモリマップファイルを使用することをお勧めします。次のリンクを参照してください。
http://techmikael.blogspot.com/2010/02/blazing-fast-ipc-in-net-4-wcf-vs.html
.NET Remoting という機能もあり、これは非常に素晴らしいと思いましたが、WCF が登場した現在では廃止されているようです。