マーシャラーとシリアライザーの違いは何ですか?


20

...そしてアンマーシャリング/デシリアライズ?ウィキペディアの説明では、私は賢明な人ではありません!用語が異なる言語で異なる方法で使用される場合、私はJavaプログラマーです。

回答:


30

ここでは意味が重要です。

マーシャリングはデータの移動を意味し、ネイティブ表現またはストレージからのデータの変換を意味しません。Javaオブジェクトは、ネイティブ表現でワイヤー上でマーシャリングできます。

シリアル化とは、データを非ネイティブの中間表現に変換することを意味します。たとえば、JavaオブジェクトをJSONまたはXMLに変換します。

もちろん、ほとんどのシステムがあること元帥のデータは、シリアル化いくつかの非ネイティブフォーマットにそれは彼らがそれを輸送する前に。


13

この質問は以前に聞かれましたが、StackOverflowについてです。こちらがリンクです。

ジェフリー・ハンティンによる答えの引用:

マーシャリングとシリアル化は、リモートプロシージャコールのコンテキストでは大まかに同義ですが、意図的に意味的に異なります。

特に、マーシャリングはここからそこへパラメータを取得することに関するものであり、シリアル化は構造化データをバイトストリームなどのプリミティブ形式との間でコピーすることです。この意味で、シリアル化はマーシャリングを実行する1つの手段であり、通常は値渡しのセマンティクスを実装しています。

オブジェクトを参照によってマーシャリングすることもできます。この場合、「ワイヤ上」のデータは、元のオブジェクトの位置情報にすぎません。ただし、そのようなオブジェクトはまだ値のシリアル化に適している場合があります。

@Billが言及しているように、コードベースの場所やオブジェクト実装コードなどの追加のメタデータが存在する場合があります。


2

マーシャラーは、ある場所から別の場所に転送されるデータ構造をキャストするために、必要なことを何でも行います。「データ構造」について話すときは、何でも構いません。オブジェクト自体(状態データ=>フィールド値)から、「スタブ」によってクライアント側で、「プロキシ」によってサーバー側で処理されるオブジェクトへのメモリ参照へ。これは、マーシャラーが「シリアライザー」を使用して、そのデータ構造をより簡単に転送できる低レベルの表現に変換できることを意味します。変換パスには、コンプレッサ、コンパイラ、アダプタなどの別のコンポーネントを含めることができます。私にとって、シリアライザはマーシャラーの一部です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.