シリアル化 – 定義

導入

コンピューティングにおいて、シリアル化(アメリカ英語のシリアル化から来ており、マーシャリングという用語は同義語としてよく使用されます) は、メモリ内にある情報の状態を、より小さな情報シーケンス(アトミックと呼ばれる、アトムの語源を参照) の形式でエンコードすることを目的としたプロセスです。 ) ほとんどの場合、バイトまたはビットです。このスイートは、たとえば、バックアップ(永続化) やネットワーク上の転送(プロキシ、RPC など) に使用できます。このシーケンスをデコードして元の情報のカーボン コピーを作成することを目的とした対称アクティビティは、逆シリアル化 (またはアンマーシャリング) と呼ばれます。

マーシャリングアンマーシャリングという用語は、コンピューター プログラム間の交換の文脈で最もよく使用されますが、シリアル化デシリアル化という用語はより一般的です。

これらの操作は一見単純ですが、オブジェクト間の参照の管理やエンコーディングの移植性など、実際にはいくつかの問題を引き起こします。さらに、さまざまなシリアル化技術間の選択は、シリアル化された一連のバイトのサイズや処理速度などのパフォーマンス基準に影響します。

シリアル化 - 定義

コンテクスト

多くのアルゴリズムの選択と同様、シリアル化メカニズムが特定のデータ型に特化すればするほど、より効率的になります。たとえば、値が 0 ~ 255 の数値を 10 個だけ送信したい場合は、 10 バイトで十分です。一方、送信するオブジェクトの量が事前にわからない場合は、この量を送信するために 1 つ以上の追加バイトを提供する必要があります。さらに、送信したいのが整数だけでなく、任意のオブジェクトである場合は、各オブジェクトの正確なタイプをコーディングできるようにする情報を関連付ける計画を立てる必要があります。

より一般的には、単純な参照を使用して再構築できる情報とエンコードする必要がある情報を決定するために、逆シリアル化時に利用可能なリソースを事前に評価する必要があります。これは、たとえば PDFファイル内の文字フォントの場合です。すべてのマシンでのレンダリングの精度を優先するか、生成されるファイルのサイズを優先するかに応じて、文字のレイアウトの完全な定義を送信することが可能です。または、単にフォントの名前とその他のいくつかの基本的な特性を送信し、ターゲット マシンに利用可能なフォントの中から最適なフォントを検索させることもできます。

最後に、性質上シリアル化が不可能であり、いずれにしても再構築する必要がある情報があります。これは、たとえばファイル記述子の場合に当てはまります。あるマシンから別のマシンへ、さらには同じマシン上のプログラムの実行から別のマシンへ、これらの記述子はオペレーティング システムによって任意に割り当てられます。したがって、その内容をシリアル化することに意味はなく、代わりに、次のような情報をエンコードする必要があります。これにより、逆シリアル化中に再構築できるようになります (たとえば、記述子を介してアクセスされるファイルの完全名)。もう 1 つの典型的なケースは、ポインターのシリアル化です。これは、ポインター突然変異(英語ではswizzling ) という特定の手法の対象となります。

アトミックオブジェクトのシリアル化

アトミック オブジェクトは、他のオブジェクトへの参照を持たないオブジェクトです。

オブジェクトの種類

言語の可能性に応じて、蘇生には言語によって提供されるメタクラスメカニズム、または特定のファクトリーが使用される場合があります。いずれの場合も、作成するオブジェクトのタイプを選択できるようにする情報を保持する必要があります。

シリアル化するオブジェクト型の数が事前にわかっている場合、型情報を非常にコンパクトにエンコードできます (たとえば、256 を超えない場合は 1バイトに)。

それ以外の場合は、Java 言語パッケージの規則などの規則を使用する必要があります。これらの従来の名前は大きくなる可能性があるため、同じタイプの複数のオブジェクトを処理するときに繰り返しを避けるためにエイリアス メカニズムを提供すると便利な場合があります。

エンコードされたタイプを実装するコードを直接送信することも可能です。これは、たとえば、Python 言語の標準ライブラリマーシャルモジュールの場合であり、バイト コードのキャッシュをサポートするすべてのインタープリタ言語でより一般的にサポートされるメカニズムです。

シリアル化 - 定義

データ

データタイプは、そのメンバー データのアーカイブと復元を担当します。複合タイプの場合、これには、事前定義された順序で各フィールドをシリアル化することが含まれます。

階層型

オブジェクト指向プログラミングでは、派生型のデータをアーカイブする前に、基本型で管理されるデータを処理する必要があります。

シリアル化 - 定義
  1. Serialisierung – alémanique
  2. Сериализация – bulgare
  3. Serialització – catalan
  4. Serializace – tchèque
  5. Serialisering – danois
  6. Serialisierung – allemand

シリアル化 – 定義・関連動画

サイエンス・ハブ

知識の扉を開け、世界を変える。