C#におけるシリアル化と逆シリアル化の基本を解説
シリアル化(シリアライズ)とは
シリアル化とは、オブジェクトをバイトストリームに変換し、ストリームに書き込める形式へと変換する処理のことです。これにより、オブジェクトの状態をメモリ、ファイル、データベースなどに保存できるようになります。
C#では、主に以下の2つの方法でシリアル化を行うことができます。
シリアル化の種類
バイナリシリアル化
オブジェクトのすべてのメンバーがシリアル化されます。読み取り専用(readonly)のメンバーも含まれるのが特徴です。コンパクトなバイナリ形式で保存されるため、高速かつ効率的なのがメリットです。
XMLシリアル化
オブジェクトのパブリックなフィールドおよびプロパティのみが対象となり、特定のXMLスキーマ定義言語(XSD)ドキュメントに準拠したXMLストリームに変換されます。人間が読みやすい形式のため、異なるシステム間でのデータ交換に適しています。
シリアル化の実装例
それでは、実際のコード例を見てみましょう。まず、ファイルストリームとBinaryFormatterのインスタンスを作成します。
FileStream fstream = new FileStream("d:\\new.txt", FileMode.OpenOrCreate);
BinaryFormatter formatter = new BinaryFormatter();次に、シリアル化するクラスのオブジェクトを作成し、3つの引数を受け取るコンストラクターを呼び出します。
Employee emp = new Employee(030, "Tom", "Operations");
準備ができたら、Serializeメソッドを呼び出してシリアル化を実行します。
formatter.Serialize(fstream, emp);
逆シリアル化(デシリアライズ)とは
逆シリアル化はシリアル化の逆の処理であり、バイトストリームから元のオブジェクトを読み込み、復元することができます。Deserializeメソッドを使用して、以下のように記述します。
var restoredEmp = (Employee)formatter.Deserialize(fstream);
このように、シリアル化と逆シリアル化を組み合わせることで、オブジェクトの状態を永続化したり、ネットワーク経由で送受信したりすることが可能になります。
注意: .NET FrameworkのBinaryFormatterは、セキュリティ上の脆弱性が指摘されており、最新の.NET(.NET 5以降)では非推奨となっています。新規開発では、System.Text.JsonやDataContractSerializerなどの安全な代替手段の使用が推奨されています。
-
VLCで音楽や動画をストリーミング配信する方法を徹底解説
VLCは無料で利用できるオープンソースのメディアプレイヤーで、ほぼすべてのメディア形式ファイルを再生できることで広く知られています。音声や動画の再生だけでなく、Webカメラやデスクトップ画面、各種ストリームの録画など、多彩な機能を備えている点も魅力です。しかし意外と知られていないのが、VLCには音楽や動画をストリーミング配信する機能もあるという点です。この記事では、VLCメディアプレイヤーを使って映画や音楽を別のデバイスへストリーミング配信する具体的な手順を、初心者にもわかりやすく解説します。VLCで音楽・動画をストリーミング配信する基本の流れVLCでのストリーミングは、「メディア」メニューに
-
HP Stream 7、Windows 10、アクセシビリティと将来
覚えていると思いますが、数年前、私は Windows 8.1 で構成された HP Stream 7 Signature Edition タブレットを衝動的に購入し、しばらく使用して、そのタッチの性質とそうでないことに折り合いをつけようとしました。タッチ操作システム。この経験はやや物足りないものでした。 次に、デバイスを Windows 10 にアップグレードしてから、ホビットの物語のように、シャイアにアップグレードしてから戻しました。これは、Microsoft の主力オペレーティング システムの最新バージョンがうまく動作していなかったためです。その後、このタブレットで数回遊んで、Window