1. ホーム
  2. .net

マーシャリングとは?何かが "マーシャリング "されるとき、何が起こっているのか?

2023-10-09 15:53:54

質問

私はこの質問が、少なくとも ここで .

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

これは、マーシャリングとは何なのか、ということを私に問いかけています。マーシャリングの定義を与えるとき、スレッド間で "marshall" する場合と同様に、相互運用の場合を説明するために、どのように定義しますか?

どのように解決するのですか?

計算機はしばしば、あるサイトから別のサイトへデータを移動する必要があり、共有メモリを持っていないことがあります。 そこで、一方の計算が他方にデータを含むメッセージを送信します。

そのデータが任意に複雑である場合、どのようにメッセージで送るべきでしょうか?

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

もちろん、データをマーシャル化した場合、最終的にはシリアル ストリームを読み込んで送信データ (構造) を再構築する、quot;unmarshall(アンマーシャル) という処理を行う必要があります。

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