1

最近、ネットワークを介したバイトデータのシリアル化について同僚と話し合いました。彼はBinaryFormatterクラスを使用して、私が彼に送信していたバイトデータを「解析解除」しました。これは機能せず、彼には明らかに例外的な...例外がありました。Binaryformatter私のデータは単なるバイト配列であったため、データを正しく「解析解除」できませんでした。

彼の動機BinaryFormatterはプラットフォームの独立でした。私はそのようなスタンスに納得していません。私たちが両方を使用したとき、BinaryReaderまたはBinaryWriter、コードランドでは物事はうまくいきました。

したがって、どのような用途があり、BinaryFormatterネットワークを介してバイトを送信する必要がある場合は、各シナリオでそれを使用することを検討する必要がありますか?

4

2 に答える 2

2

確かに、データがとしてある場合は、使用するのが賢明byte[]BinaryFormatterはありません。データをワイヤーに書き出すだけです。ただし、オブジェクトのセットがあり、それらをストリームにシリアル化するBinaryFormatter場合は、各タイプの各フィールドを手動で書き込むよりもはるかに簡単に使用できます。一般に、または任意のシリアライザー/デシリアライザースキームの目的はBinaryFormatter、オブジェクトグラフ(場合によっては複雑)をバイトシーケンスとして永続化する方法を提供することです。

于 2009-07-10T21:24:13.450 に答える
2

「プロトコルバッファ」のようBinaryFormatterなものを見たいと思うかもしれません. )。

幸い、.NET にはprotobuf-netなどのバージョンがあります。

(開示:私は著者ですが、無料です。私はあなたに何かを売り込もうとしているわけではありません-多くの時間と労力を節約するだけです)

BinaryFormatter非常に...もろいです。これは .NET 固有のものであり、バージョン トレランスが比較的貧弱です。AppDomain私がそれを使用するのは、同じマシン上の間で通信するための舞台裏だけです。それ以外の場合は、、、、または protobuf-net などXmlSerializerのコントラクト ベースのシリアライザーを調べます。DataContractSerializer

于 2009-07-10T21:48:22.403 に答える