IpcChannelはWindowsが持つIPC(Interprocess Communications, プロセス間通信)技術である、メールスロット、DDE、パイプ(匿名パイプ・名前付きパイプ)のうち名前付きパイプを使用した技術である。
名前付きパイプは共有メモリを使用するための技術で、OSに名前の付いたプロセス間で使用できる共有メモリ領域を確保させて、それをプロセス間で利用する技術。メモリマップドファイルを使用する場合に比べ抽象度が高い方法で共有メモリを使用することが出来る。本来名前付きパイプはネットワーク越しでのプロセス間通信にも使用することが出来る技術だが、.NET RemotingのIpcChannelはローカルでのプロセス間(AppDomain間)の通信にその使用が限られている。
IpcChannelがTcpChannelに比べ高速な理由は、TcpChannelがWinSock(実際にはループバックドライバか?)まで落ちてデータ通信が行われるのに対して、IpcChannelではユーザーモード/カーネルモードの切り替わりも行われずに、ユーザー層の中だけでプロセス間通信が行われるためTcpChannelに比べ高速に通信できるからだと考える。MSがIpcChannelをローカルにとどめたのもこれが理由で、仮にIpcChannelをネットワーク経由で使用できるようにしても、現状では結局Winsockを使用するので、TcpChannelに比べて速度的なアドバンテージが得られないからだと考えている。
参考:
MSDN TV – What’s New in .NET Remoting for .NET Framework 2.0
http://msdn.microsoft.com/msdntv/episode.aspx?xml=episodes/en/20050120netmt/manifest.xml
#日本語スクリプトキボンヌ
相変わらず、App.Config以外で、認証付きIpcChannelの設定方法がわかりません。それらしきプロパティもないし。App.Configの設定方法に関しても、上のストリーミング中のデモに出てくる物と、PPTがネットにいくつかあるだけ。MSDNにもそれらしき記述がほとんど無い状態。取りあえず以下の情報はあるけど。
製品版までにはこの辺の情報も改善されるのかなー。リモーティングはとにかく情報がないっす。
Authentication with the IPC Channel
http://msdn2.microsoft.com/library/ms172351(en-us,vs.80).aspx
コメント