12

.NET の世界では、マーシャリングとは、境界を越えて、またはワイヤを介して転送するためのオブジェクト/データの準備を意味するだけですか、それとも、境界を越えて、またはワイヤを介して転送するための準備と転送を意味しますか?

そして、呼び出しをマーシャリングするとはどういう意味ですか。コンテキスト境界を越えた「転送」の呼び出しのパッケージ化だけを意味するのでしょうか、それとも呼び出しのパッケージ化と送信 (つまり、呼び出し) でしょうか?

ベタベタでごめんなさい…

クラリー

4

5 に答える 5

2

私の考えでは、マーシャリングとは、オブジェクトまたはデータを取得し、非ネイティブなコンテキストで使用できるように準備し、それを外部のコンテキストに提示する行為を指します。

私は、データやオブジェクトがなじみのない環境に「案内される」という観点から考えています。これには、異なるエンコーディング、ラッパーなどが含まれる場合があり、オブジェクトがどのように転送されるかは、マーシャリング プロセスの重要な部分です。

データまたはオブジェクトが実際に新しいコンテキストに提示されるまで、マーシャリングされたとは見なしません。その時点で、変換、暗号化、ラップなどが行われています。

たとえば、JSON は、あるプロセスから別のプロセスにオブジェクトまたはデータを転送するためによく使用されます。JSON に変換すると、あるデータ構造から別のデータ構造への変換と見なされます。ワイヤを介して転送されると、マーシャリングされます。

したがって、コンテキストの変更もマーシャリングもありません。

それは私の2セントです。

于 2009-06-03T15:30:21.047 に答える
1

私が理解しているように、それは転送ではなくデータの準備です。それでも、転送も含めてこの用語を使用することは珍しくありません (私もこれを行ったことに罪を犯しています)。

于 2009-06-03T15:29:19.427 に答える
1

両方のシナリオを表すことができると思います。

  • データのみ: PInvoke のシナリオを検討してください。マーシャリングは一般に、データを .Net 形式から対応する C 形式に変換する動作を説明するために使用されます。
  • データと呼び出し: アパートをまたがる COM 呼び出しを考えてみましょう。この場合、実際の呼び出しは COM アパートメントの境界を越える必要があるため、呼び出しに必要なデータと呼び出しの両方がマーシャリングされていると見なされます。.Net のコンテキストでこれを質問したことは承知していますが、これは .Net に関連する確かな例だと思います。たとえば、ISynchronizedInvoke を使用してスレッド間を移動することを検討してください。
于 2009-06-03T15:35:37.013 に答える
1

「元帥」にはいくつかの意味がありますが、肩書き以外では、. . .

マーシャル - 動員: 行動または使用の準備を整える。「マーシャルリソース」

したがって、「パッケージして送信する」ではなく、「パッケージする」という意味にすべきです。

于 2009-06-03T15:35:38.573 に答える
0

マーシャリングは純粋に境界を越えています

通常、2 つの appDomain 間でオブジェクトを渡すために使用されます。有線部分はオプションですが、オブジェクトを有線で送信するプロセスは、最初にオブジェクトのシリアル化であり、送信は通常、他のプロトコル (tcp/ip) によって行われます。

于 2009-06-03T15:38:27.963 に答える