マーシャリングとは何ですか? 何かが「マーシャリング」されると何が起こりますか? 質問する

マーシャリングとは何ですか? 何かが「マーシャリング」されると何が起こりますか? 質問する

この質問は少なくとも聞かれたことは知っていますここ

しかし、少なくとも私にとっては、満足のいく答えはありませんでした。アンマネージ コードとの相互運用に関するマーシャリングについては多くの議論がありますが、.NET で時々行う必要がある、あるスレッドから別のスレッドへのマーシャリングについてはどうでしょうか。

こうなると、マーシャリングとは実際何なのかと疑問に思います。マーシャリングの定義を述べる場合、相互運用性のケースと、スレッド間で「マーシャリング」するケースの両方を説明できるように、どのように定義するのでしょうか。

ベストアンサー1

多くの場合、計算ではデータをあるサイトから別のサイトに移動する必要があり、共有メモリはありません。そのため、1 つの計算がデータを含むメッセージを他の計算に送信します。

そのデータが任意に複雑な場合、メッセージでどのように送信すればよいでしょうか?

マーシャリングとは、データ フィールドまたは関連する構造のセット全体を、メッセージで送信できるシリアル化された文字列に変換するプロセスです。 2 進数をマーシャリングするには、メッセージ形式がテキストでなければならない場合は、16 進数の文字列に変換します。 メッセージがバイナリ データを運ぶ場合は、2 進数を 4 つのリトルエンディアン正規化バイナリ バイトに変換して送信します。 ポインターはより困難です。多くの場合、実際のメモリ位置とは無関係な抽象的な参照 (たとえば、「ノード番号」) に変換する必要があります。

もちろん、データを「マーシャリング」する場合は、最終的には「アンマーシャリング」、つまりシリアル ストリームを読み取って送信されたデータ (構造) を再構築するプロセスを実行する必要があります。

多くの場合、この目的を達成するために使用されるライブラリには (アン) マーシャリング ルーチンがあり、場合によっては、データを送受信するために (アン) マーシャリング ルーチンで必要なすべての呼び出しを作成するツールさえあります。

おすすめ記事