• 締切済み

VB.NETによるプロセス間通信

VB.NETにおいて、2つのプロセスを起動し、その間のデータの受け渡しを行いたいのですが、 ファイルでは速度が遅すぎて、別の手法を探しています。なるべく簡単で実装できる方法を知りたい です。ちなみに受け渡すデータのサイズですが、数十バイト程度です。よろしくお願いいたします。

みんなの回答

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.3

>度々の回答ありがとうございます。「プロセス間通信のほうが遅い」 >とのことですが、具体的な実例などありますでしょうか? なぜ遅いか?考えればすぐわかると思いますが。 単純なものは”速い”、複雑なものは”遅い”です。 最初の回答で書いたurlの方法が.NETでのまっとうなプロセス間通信の方法だと思います。 が、通信を行う双方のアプリを不正なアクセスから保護するために、何層にも処理の階層(レイヤー)が分かれて、それぞれに手順が定められています。 そんな複雑なことをやるよりは、単純な処理であるファイルの方が速いのはすぐに理解できますよね。#2に書いたとおり、キャッシュに乗ったらほとんどオンメモリでの処理です。 というか、テンポラリ用に、明示的にメモリ上にファイルを作ることだって不可能ではありません。 >>というか、速度を求めるのに今のWindowsで.NETを選択してる時点で間違ってるような・・・ >また、VB.NETを使用している理由ですが、現在および将来 >において、入手が可能な開発環境であるということです。 うーん、なぜ処理速度をそこまで求めるのでしたらCやC++ではないのでしょうか?という意味だったんですけど。 開発環境の入手性でしたらVC++.NETなら変わりませんが。 今のWindowsでは、.NET Frameworkは階層的にWindowsAPIの上にのっているだけです。つまり、余分なオーバーヘッドたっぷりです。 ただし、次期OSでは階層が逆になるので.NETの方が速くなる可能性もありますが。 ちなみに、一番単純で速いプロセス間通信は、DLLを使った共有メモリだと思います。ただし、.NETを使うんでしたら実現できませんが。 http://www.cisnet.or.jp/home/tsuneoka/win32sub/3.html

参考URL:
http://www.cisnet.or.jp/home/tsuneoka/win32sub/3.html
  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.2

>この処理が数回なら全く問題ではないのです が、数百回となると100ミリ秒でも問題となってきます。 うーん、単純に回数を掛けても意味が無いかと。 特にファイルなんて、OSによるキャッシュがバリバリ効きます。 ちゃんとした手順を踏んだプロセス間通信よりよっぽど速いと思います。 ところで排他や同期は考えないんですか? プロセス間通信のオーバーヘッドよりこういうことのほうがよっぽど時間がかかることだと思うんですが。 というか、速度を求めるのに今のWindowsで.NETを選択してる時点で間違ってるような・・・

AGRESS
質問者

補足

度々の回答ありがとうございます。「プロセス間通信のほうが遅い」 とのことですが、具体的な実例などありますでしょうか?「業務」 なので、抽象的な「遅いと思う」では納得させることができないので、 具体的な内容があれば、それが知りたいです。 また、VB.NETを使用している理由ですが、現在および将来 において、入手が可能な開発環境であるということです。

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.1

数十倍とのデータを受け渡すのに、ファイルでは遅いってのが良くわかりませんが。FDか何かと勘違いしてませんか? で、 .NET プロセス間通信 こんなキーワードで検索すれば、いろいろと出てきますが。 Googleの結果の2番目はこれ http://www.microsoft.com/japan/msdn/thisweek/step7/remoting/server_01.aspx あとは、.NETで準備してるような方法で満足できないんでしたら、 1.WindowsAPIを使ってファイルマッピングを使う 2.WM_COPYDATAを使って別プロセスのウィンドウにメッセージとして送る。 3.WindowsAPIを使ってパイプ ですかね。 ですかね。

AGRESS
質問者

補足

「遅い」というのが客観的な表現ではなかったため、誤解をされているようです。 簡単な実験プログラムで試験したところ、ファイルでデータの受け渡しを行うのに かかる時間は約100ミリ秒でした。この処理が数回なら全く問題ではないのです が、数百回となると100ミリ秒でも問題となってきます。最低でも5倍、できれ ば10倍以上のスピードアップが必要なのです。また、Googleでの検索で出てくる 内容についても、具体的な実装には少々使えなさそうな感じがします。

関連するQ&A