vb6アプリと.netアプリの間でデータを渡す必要があります。このデータは毎秒書き込まれるか、または毎秒読み取られます。約30フィールドです。両方のアプリは同じマシンに存在します。私は現在、レジストリを介してこのデータを渡していますが、それは素晴らしいですが、それは私を少し緊張させます。私はテキストファイルでそれを行うだろうが、私はデータの損失が心配です。VB6アプリと.Netアプリの間でデータを渡す
これを行うにはどのような方法が最適ですか?
vb6アプリと.netアプリの間でデータを渡す必要があります。このデータは毎秒書き込まれるか、または毎秒読み取られます。約30フィールドです。両方のアプリは同じマシンに存在します。私は現在、レジストリを介してこのデータを渡していますが、それは素晴らしいですが、それは私を少し緊張させます。私はテキストファイルでそれを行うだろうが、私はデータの損失が心配です。VB6アプリと.Netアプリの間でデータを渡す
これを行うにはどのような方法が最適ですか?
共通バックエンド?はい、レジストリは動作しますが、テキストファイルは動作しますが、マルチユーザー環境ではデータベース(MS AccessやSQL Serverなど)を使う方が良いでしょう。
メイルスロット、メモリマップファイル、名前付きパイプ、ソケット。これらのためにウェブ上にたくさんのヘルプとコードがあります。
同じマシン(両方のWindows OS)上のプロセス間の小さなメッセージ:MailSlotsを使用してください。
同じマシン上のプロセス間の大きなデータブロック:メモリマップされたファイルに移動します。
プロセス間のメッセージのストリーミング(同じまたは異なるマシン、両方のWindows OS):名前付きパイプを使用します。
プロセス間のメッセージのストリーミング(同じマシンまたは異なるマシン、同じまたは異なるOS):ソケットで実行します。
レジストリを使用しているので、代わりにメールスロットを使用している可能性があります。
私は使用されたメールスロットを使用しません。良い例を教えてくれますか? – jocoder
@jocoder:チェックアウトには2つの場所があります。まず、http://www.codeproject.com/Articles/19231/Fully-functional-Asynchronous-Mailslot-Control-in – rskar
@jocoderのC#プロジェクト:第二に、これは誰かのVBコードであり、ほとんどは動作します。それを発行する):http://forums.devx.com/archive/index.php/t-160327.html – rskar
実際にメールスロットはマシン間で正常に動作します。 400バイトを超えるメッセージに対してはうまく動作しません。
DDEはまだサポートされており、かなり高速です。おそらく.NETのサポートはありません。
もちろん、単純なアウトプロセスCOMは、Windows RPCの上にある薄いレイヤーです。
かなり怖い。これは、レジストリが意図したものではありません。レジストリハイブの断片化について聞いたことがありますか? – Bob77