C#のシリアル化可能なオブジェクトとは何ですか?シリアライズ可能なという言葉は、「シリアライズ可能なオブジェクト」以上のものを私に投げかけていると思います。
8 に答える
通常、オブジェクトはランダム アクセスです。つまり、オブジェクトの任意の部分 (プロパティまたはフィールド) を指定して、その部分に直接アクセスできます。オブジェクトの格納に RAM を使用している場合は、それで問題ありません。RAM はランダムアクセスメモリであり、したがって、その作業に適しているからです。
オブジェクトを従来のランダム アクセスではないメディア (たとえばdisk ) に格納する必要がある場合、またはストリームメディア (ネットワークなど) を介してオブジェクトを転送する必要がある場合は、オブジェクトを次の形式に変換する必要があります。関連する媒体に適しています。この変換プロセスはシリアライゼーションと呼ばれます。これは、構造化されたオブジェクトがフラット化またはシリアライズされ、長期保存やネットワーク経由での転送が容易になるためです。
RAM 内のオブジェクトを構成するビットをディスクにコピーしたり、ネットワーク経由で不透明なブロブとして送信したりしないのはなぜですか? …と聞くかもしれません。いくつかの問題:
- 多くの場合、オブジェクトがメモリに格納される形式は独自のものであるため、一般に使用するのには適していません。メモリに格納される方法は、メモリ内での使用に最適化されています。
- オブジェクトが他のオブジェクトを参照する場合、それらの参照は実行中のアプリケーションのコンテキスト内でのみ意味を持ちます。シリアライゼーション プロセス中にオブジェクト グラフがウォークされ、それに応じてシリアライズされない限り、オブジェクトを意味のある形でデシリアライズすることはできません。これらの参照を、アプリケーション インスタンスのコンテキスト外で意味を持つ形式に変換する必要がある場合があります。
- 異種システム間の相互運用性要件が存在する場合があります。その場合、オブジェクトを表す標準的な手段が必要になります (通常、これには何らかの形式の XML が選択されます)。
ビットに変換して、ハードドライブなどのメディアに保存できるオブジェクト。 http://en.wikipedia.org/wiki/Serialization
オブジェクトのシリアル化はインスタンスの状態を保存しているため、後でそのインスタンスを再構築できます。
ほとんど (C# および Java) では、シリアル化可能なオブジェクトは「マーク」されます。Java では、Serializable を実装する必要があります。C# では [Serializable] を使用する必要があります。
オブジェクトがシリアル化されると、ファイルに保存したり、ネットワーク経由で送信したりできます。
インスタンスのすべてのインスタンス変数を調べて、その値を区切り記号で区切って格納するようなものだと考えてください (ただし、それよりもはるかに洗練されています。非プリミティブ型のインスタンス変数がある場合に何が起こるかを考えてみてください。それらの中にすべての値も保存する必要があります)。
その用途の 1 つは、ゲームの保存です。
シリアル化:オブジェクトをバイナリ形式、単純なオブジェクトアクセスプロトコル(SOAP)、または簡単に保存、転送、取得できるxmlドキュメントに変換する手法です。
簡単な方法で、データを圧縮および解凍し、安全な方法でネットワークを介してデータを転送できるシリアル化方法。
オブジェクトのシリアル化は、ljuwaidahが説明したものです。このリンクを試してくださいまた、 テキストをリンクしてください
オブジェクトをC#で[シリアライズ可能]としてマークできます。つまり、.netでオブジェクトをバイナリ、SOAP、XMLに変換できます。
これの利点は、オブジェクトをシリアル化してインターネットやネットワークなどに送信し、反対側でオブジェクトとして復元できることです。これにより、反対側のコンピューターがデータを読み取って逆シリアル化できる限り、WindowsマシンからUnixマシンなどのマシンの境界を越えることができます。
この記事を参照してください: http ://www.devhood.com/Tutorials/tutorial_details.aspx?tutorial_id = 236
一般に、シリアル化とは、オブジェクトの状態を「保存可能な」形式(ディスクへの保存など)に保存して、後で実際のオブジェクトに逆シリアル化できるようにすることを意味します。通常、リモート呼び出しの場合は、ネットワークを介してオブジェクトを送信するためにも行われます。保存したくない場合や、オブジェクトをネットワーク経由で送信したくない場合は、シリアル化可能な部分を無視できます(Javaでは、シリアル化可能なインターフェイスを実装しません)。
これまで述べてきたことに加えて、データのシリアル化は明確に定義された順序を与えることを意味することに言及することが重要だと思います(シリアルはシリーズに由来します。つまり、何かを並べたり、並べたりすることを意味します)。
たとえば、グラフ (たとえば、「セマンティック Web」で知られる RDF グラフ) を XML などのシリアル化形式にシリアル化するということは、グラフに含まれる情報を順序付けする方法を定義するルールセットが必要であることを意味します。後で逆シリアル化ルールを適用する (逆シリアル化する) ことで再構築できます。