web-dev-qa-db-ja.com

シリアル化とは何ですか?

私はOOPプログラミングを始めており、OOP parlance?の直列化の意味を知りたいですか?

124
edward

シリアル化は、メモリ内のオブジェクトをバイトストリームに変換するプロセスであるため、ディスクに保存したり、ネットワーク経由で送信したりすることができます。

逆シリアル化は逆のプロセスです。つまり、バイトストリームをメモリ内のオブジェクトに変換します。

119
Andrew Barnett

簡単に言えばシリアル化は、オブジェクトをバイトストリームに変換して、ネットワーク経由で転送したり、永続ストレージに保存したりするプロセスです。

逆シリアル化は正反対です。ネットワークまたは永続ストレージからバイトストリームをフェッチし、オブジェクトに変換して戻します同じ状態

理解する必要があるのは、これらのバイトストリームがどのように解釈または操作され、まったく同じオブジェクト/同じ状態になるかです。それを達成するためのさまざまな方法があります。それらのいくつかは-

  1. [〜#〜] xml [〜#〜]:オブジェクトをXMLに変換する、ネットワーク経由で転送する、またはファイル/ dbに保存する。それを取得し、同じ状態のオブジェクトに変換して戻します。 Javaでは、[〜#〜] jaxb [〜#〜](XMLバインディングのJavaアーキテクチャ)ライブラリを使用します(Java 6からはJDKにバンドルされています)。
  2. [〜#〜] json [〜#〜]:オブジェクトを[〜#〜] json [〜#〜](JavaScript Object notationに変換することで同じことができます。 )。この場合にも使用できるGSONライブラリがあります。
  3. または、OOP言語自体によって提供されるシリアル化を使用できます。たとえば、Javaでは、Serializable interfaceを実装してObject Streamに書き込むことで、オブジェクトをシリアル化できます。
74
Aniket Thakur

写真による説明:

Rex, my dog, is serialised!

類推による説明:

電話で友人と話しているときに、新しい子犬について話しているとします。

ここに私の問題があります:子犬は生きている、呼吸する哺乳類です。電話回線で子犬を伝えるにはどうすればよいですか?子犬を受話器に物理的に入れることはできません。

その代わり、電話で子犬の表現を伝える必要があります。つまり、犬Rexをシリアル化し、シリアル化されたRexのバージョンを電話回線で送信します。

{ "name":"Rex", "age":5, "favourite_food": pedigree_choice_cuts, "favourite_game": fetch_ball, "favourite_hobby": wagging_tail }

それは完璧な表現です-私の犬のシリアル化。

概要:

シリアル化とは、基本的に、犬のレックスを他の何か-JSONオブジェクト-に変換し、電話回線で一連の1と0として転送できることを意味します。 NYCの私のバディは、これらの1と0をJSONオブジェクトに変換して戻すことができます。これにより、彼は私の犬Rexを完璧に表現できます。シンプル!質問は?コメントを投稿してください。

49
BKSpurgeon

これを確認してください、これはあなたに良い説明を与えます:

http://en.wikipedia.org/wiki/Serialization

シリアル化という用語の最も一般的な使用法は、バイナリオブジェクトをXML(またはその他の文字列)表現に変換して、データベース/ファイルに保存したり、Webサービス呼び出しでネットワーク経由で送信できるようにすることだと思います。逆シリアル化は逆のプロセスで、XML /文字列をオブジェクトに変換します。

編集:あなたが出くわすかもしれない別の用語は、マーシャリング/アンマーシャリングです。マーシャリングは基本的にシリアライズと同じ概念であり、アンマーシャリングはデシリアライズと同じです。

14
Andy White

シリアル化とは、オブジェクトをバイトストリームに変換してオブジェクトを格納するプロセス、またはオブジェクトをメモリ、データベース、またはファイルに送信するプロセスです。その主な目的は、オブジェクトの状態を保存して、必要なときに再作成できるようにすることです。逆のプロセスは、逆シリアル化と呼ばれます。

...

この図は、シリアル化の全体的なプロセスを示しています

Overall process of serialization

...

シリアル化により、開発者は、Webサービスを使用してオブジェクトをリモートアプリケーションに送信したり、あるドメインから別のドメインにオブジェクトを渡したり、XML文字列としてファイアウォールを通過したり、セキュリティやユーザー固有のオブジェクトを維持したりするなどのアクションを実行できますアプリケーション全体の情報

から https://docs.Microsoft.com/en-us/dotnet/csharp/programming-guide/concepts/serialization/

(エンファシス鉱山)

シリアル化は、順序付けられていないデータ(オブジェクトなど)をseriesのトークンに変換するプロセスであり、後で元のデータを再構築するために使用できます。シリアル化された形式は、ほとんどの場合テキストの文字列ですが、そうである必要はありません。

5
Dave Sherohman

シリアル化とは、オブジェクトを保存可能なビットシーケンスに変換することです。

このシーケンスをファイル、dbに保存するか、ネットワーク経由で送信できます。

後で実際のオブジェクトにデシリアライズし、いつでも再利用できます。

Webサービスおよび[〜#〜] ajax [〜#〜]は、シリアル化の最も一般的な例です。応答をクライアントに送信する前にシリアル化されたオブジェクト。

2
Canavar

シリアル化とは、Java、C#、またはその他の(OOP言語)でサポートされているオブジェクトをトランスポータブル形式に変換するプロセスです。これにより、ネットワークを介して転送されるか、ディスクに保存されます。クラスをシリアル化するには、シリアル化可能なインターフェイスを実装する必要があります。

1
Nesan Mano

シリアル化は、Javaサポートされているオブジェクトをサポートされているファイルに転送することです。

                         (OR)

変換Javaサポートされたフォームからネットワークでサポートされたフォームへ。シリアル化の主な範囲は、ある層から別の層へデータを転送することだけです...通信網..

1
sriiii

シリアル化とは、オブジェクトをバイナリデータストリームに変換して、ファイルに保存したり、同じオブジェクトに戻すことができるネットワーク経由で送信したりするプロセスです。

これ ドキュメントは、Javaシリアライゼーションの詳細を理解するのに役立ちます。

0
Nikhil Katre

クラス(設計図)から実際のオブジェクト(モノ)をインスタンス化(構築)する場合、オブジェクト(モノ)をシリアル化(基本アトミック構造に分解)してメモリ内のスペースに保存する必要があります。 (スタートレックトランスポーターのような種類)。どこかへ運んで保存できる情報の流れに分解します。次に、事物を再構築する場合は、アトミックに格納されたインスタンスをオブジェクトに戻します。インスタンス化とは異なります。

0
David K Hill

シリアル化は、バイナリオブジェクトをXML(またはその他の文字列)表現に変換して、データベース/ファイルに保存したり、Webサービス呼び出しでネットワーク経由で送信できるようにする必要があります。逆シリアル化は逆のプロセスで、XML /文字列をオブジェクトに変換します。

0
viswanathan

シリアル化とは、オブジェクトの状態をファイルに保存できるときに、オブジェクト(メモリの塊)をフォームに変換することです(例)。

クッキーを作るものとして扱ってください-オブジェクトは生地、クッキーです-シリアル化された生地です。

したがって、「シリアル化」することにより、Cookieを友人に送信できます。

そんな感じ :-)

0
Mr.ElectroNick

シリアル化は、データをバイトの線形「ストリング」に変換します。

他の人は多かれ少なかれ同じことを言っていますが、コンピューターモデルでは、データが1次元でアドレス指定されたRAMまたは永続ストレージに収まる必要があることを強調します。

「データ」であるほとんどのものは本質的に直列化可能です(抽象モデルを線形モデルに縮小する必要がある場合でも)。直列化可能ではないことは、ネットワーク接続や、パーサーのような複雑な状態ベースのマシンと言えます。

0
Overflown