| プロセスの引数 | Process.Start の第2引数で送り、Main 関数の args 引数で受け取ります。 |
| 終了コード | Main 関数の戻り値や、Environment.Exit、Environment.ExitCode で送り、Process.ExitCode で受け取ります。 |
| 標準入力 | Process. StandardInput.WriteLine() で送り、Console.ReadLine() で受け取ります。 プロセス開始時に RedirectStandardInput を true に、UseShellExecute を false に設定する必要があります。 |
| 標準出力 | Console.WriteLine() で送り、Process. StandardOutput.ReadLine() で受け取ります。 プロセス開始時に RedirectStandardOutput を true に、UseShellExecute を false に設定する必要があります。 |
| ファイル | 一時ファイルを作成し、そこにデータを書き込んで、別の方法(引数等)でファイル名を渡します。 シンプルで分かりやすく、大容量データの交換も容易です。 |
| gRPC | リモートプロシージャコールの現在の標準です。gRPC over Named Pipes として組み合わせることで、 ローカル通信のオーバーヘッドを最小化しつつ、gRPCのプログラミングモデルを享受できます。 |
| SignalR | サーバーからクライアントへのプッシュ通知や、リアルタイムな双方向通信に特化したライブラリです。 大規模な分散コンピューティングを行いたいときに利用できます。 |
| 名前付きパイプ | NamedPipeServerStream、NamedPipeClientStream を使って送受信します。 同一マシン内で通信する場合、TCP/IPよりかなり高速です。 ネットワーク経由で他のコンピュータとも通信でき、メッセージ(パケット)形式もサポートしています。 |
| 匿名パイプ | AnonymousPipeServerStream、AnonymousPipeClientStream を使って送受信します。 親子プロセス間のみ、1対1、片方向、メッセージ形式非対応と、機能が少な目ですが、 名前付きパイプより軽量(高速)で、他のプロセスからアクセスされないため、 セキュリティ面を気にしなくて良いと言う利点があります。 |
| TCP/IPソケット通信 | ネットワーク経由でストリーム通信したい場合に適しています。 |
| 共有メモリ | 同一マシン・プロセス間で大量のデータを共有する場合に適しています。 メモリコピーが発生しないため最速の方法です。 |