ストリームは、ファイル、入出力デバイス、プロセス間通信パイプ、TCP/IP ソケットなどの一連のバイトを抽象化したものです。Stream クラスとその派生クラスは、これらのさまざまな種類の入力と出力の一般的なビューを提供し、プログラマーをオペレーティング システムと基盤となるデバイスの特定の詳細から切り離します。[MSDN によると]
したがって、ストリームを使用して.NETでさまざまな形式を使用するシリアル化のために、 serialize を使用していると思います。要求を定義する必要があります
シリアライゼーションとは、永続ストレージのためにオブジェクトをバイトに変換するプロセスです。逆シリアル化プロセスでは、データを失うことなくバイトをオブジェクトに変換します。シリアライゼーションは、ファイルまたはデータベースに値を保存したり、ネットワーク経由でオブジェクトを送信したり、元のオブジェクト形式に変換したりするために使用されます。.NET Framework は、シリアル化プロセスを容易にするためのフレームワーク クラス ライブラリ (FCL) のセットを提供します。2 つの異なるアプリケーション間でデータを送信する場合に非常に便利です。
.NET Framework は、バイナリ シリアル化と XML シリアル化の形式をサポートしています。XML シリアル化は、パブリック フィールドのみをシリアル化します。ただし、バイナリ シリアル化では、すべてのプライベート フィールドとパブリック フィールドがシリアル化されます。シリアル化は、基本またはカスタムとして実行できます。基本的なシリアル化は、クラスに SerializableAttribute 属性が適用されている場合に発生します。基本的なシリアル化は、バージョン管理をサポートしていません。カスタム シリアル化クラスは、SerializableAttribute とマークされ、ISerializable インターフェイスを実装する必要があります。ユーザーは、バイナリおよび XML シリアライゼーション形式の両方にカスタム シリアライゼーションを実装できます。カスタム アプリケーションでは、GetObjectData をオーバーライドする必要があります。サンプル アプリケーションでは、バイナリ シリアル化と XML シリアル化の両方にカスタム シリアル化を使用します。.NET Framework は、開発ツールに関連付けられているデザイナーのシリアル化をサポートしています。
カスタム シリアライゼーションは、シリアライゼーションおよびデシリアライゼーション プロセスを制御するプロセスです。カスタム シリアル化は、シリアル化中およびシリアル化後にカスタム メソッドを実行するか、ISerializable インターフェイスを実装することによって実装できます。カスタム シリアル化は、シリアル化オブジェクトのバージョン管理に使用されます。シリアル化されたオブジェクトがオブジェクトの状態を変更した場合 (新しいバージョンで新しいファイルが追加された場合)、データを失うことなく値を取得するためにカスタム シリアル化が使用されます。属性が欠落しているために、シリアル化されたオブジェクトのバージョン管理が失敗する場合があります。
ユーザーがシリアル化中およびシリアル化後にカスタム メソッドを使用する場合、ユーザーは、シリアル化および逆シリアル化中にデータをカスタマイズするために、OnDeserializedAttribute、OnDeserializingAttribute、OnSerializedAttribute、および OnSerializingAttribute 属性を使用してカスタム シリアル化サポートを適用する必要があります。OptionalFieldAttribute 属性は、逆シリアル化のために古いバージョンのデータを無視するために使用されます。フォーマッターは、逆シリアル化中にエラーを出しません。シリアライゼーション/デシリアライゼーションの前後にオブジェクトを更新できます。
以下のリンクが役立つと思います
http://www.codeproject.com/Articles/422474/Serialization-using-different-formats-in-NET