0

新しいリリースがほぼ完成している間、WCF サービスが Silverlight クライアントに返す大きなサイズの XML データを無視してきました。現在、結果が 10 ~ 100 MB の範囲にならないように、データを圧縮する方法を調査しています。

バイナリ シリアライゼーションが解決策であることは明らかであり、SharpSerializer などを使用してデータをバイナリにシリアライズするのは簡単に思えますが、バイナリ シリアライゼーションに関するすべての SO 投稿や、私が遭遇した他のチュートリアルでは、誰も対処していません。シリアル化されたデータをネットワーク経由でクライアントに送信する方法。私は、WCF サービス パズルの明白ではあるが重要な部分を見逃していると思います。

うまくいけば、誰かが私に助けを貸してくれます。さらに情報を含める必要がある場合はお知らせください。

4

1 に答える 1

1

最初に、組み込みのバイナリ エンコーディングを試します (構成の <binaryMessageEncoding> 。http://www.mostlydevelopers.com/blog/post/2009/10/14/Silverlight-3-WCF-Binary-Message-Encoding.aspxを参照)およびhttp://www.silverlight.net/learn/data-networking/network-services-(soap,-rest-and-more)/how-do-i-use-binary-encoding-for-wcf-with-シルバーライト-3 )。

データはおそらく圧縮されますが、組み込みのバイナリ エンコーディングは、できるだけ小さくするのではなく、できるだけ高速になるように設計されていることに注意してください。

それだけでは不十分で、サードパーティ コンポーネントを使用してバイナリ データへのシリアル化を行いたい場合は、実際にこのデータを byte[] として返すことができます (ただし、上記の <binaryMessageEncoding> を使用して、WCF が base64 にならないようにする必要もあります)。 -有効な XML にするためにデータをエンコードします)。byte[] の代わりに Stream を使用することもできます。これにより、Silverlight クライアント側で真のストリーミング動作が得られませんが、サーバー側で真のストリーミングが得られます。

于 2012-10-13T08:53:13.580 に答える