1

Silverlight 4にクライアントアプリケーションでのバイナリデータのシリアル化/逆シリアル化をサポートするBinaryFormatterが含まれていることをどこかで読んだと思いましたが、見つからないようで、そこにはないと思います。

Silverlight4アプリケーションからアクセスする必要のある既存のサービスがあります。このサービスは、TCPを介したソケットを使用します。クライアントアプリを接続してサービスからメッセージを受信できましたが、メッセージの内容を逆シリアル化できません。

メッセージは、サーバー上でシリアル化された次のオブジェクトで構成されています。

class Message
{
    String Name { get; set; }
    Stream Data { get; set; }
}

私はサービスを管理できず、フォーマットやプロトコルなどを変更することはできません。(また、fwiw、Nameは可変長です。)

SilverlightクライアントでMessageオブジェクトを再構成するにはどうすればよいですか?

4

3 に答える 3

2

私はSilverlight用のバイナリデシリアライザーを作成しようとさえしませんでした(私はそれが可能であるとさえ確信していません)。

代わりに(ASP.NETホストサイトを想定)、ホストサイトにWCFサービスを配置して一種のプロキシとして機能させます。WCFサービスは、Silverlightアプリに代わってサービスにリクエストを送信します。

于 2011-10-12T16:29:24.140 に答える
0

それで、試行錯誤の末、私は自分の問題に対する次の解決策を見つけるのをやめました。

まず、メッセージクラスを変更できるサーバーコードにアクセスできたため、DataプロパティがStreamを返す代わりに、Byte配列を返します。次に、XmlSerializerを使用して、オブジェクトを発信NetworkStreamにシリアル化します。どうやら、XmlSerializerはデフォルトでBase64エンコーディングを使用し、バイト配列をXMLストリームに含めることができる文字列に変換します。

Silverlightクライアントでは、XmlSerializerを使用して、バイト配列をクライアント側オブジェクトに逆シリアル化します。

バイナリシリアル化とまったく同じではありませんが、最終的な目標は、SLクライアントのSocketから受信したバイナリデータ(バイト配列)を逆シリアル化することでした。

于 2011-10-21T01:19:08.113 に答える
0

BinaryReaderをお探しですか?

于 2011-10-12T19:00:10.460 に答える