複雑な2次元ベクトルグラフィックスを表示する必要があるSilverlightアプリケーションに取り組んでいます。 サーバーから圧縮されたXAMLファイルをダウンロードし、解析し(XamlRead)、ページ上のレイアウトルートに挿入します。 これはかなり小さいxamlファイルでうまくいきます。問題は、もっと大きなファイル(たくさんのコンテンツ)で動作させる必要があるということです。例えば、私の圧縮されていないxamlファイルのうちの1つは20 MBの大きさであり、XamlReadメソッドはそれを解析するのに長い時間を要します。私の質問は、サーバー側ですべての解析を行う方法があるかどうかです。 XamlReadメソッドのシリアル化されたバイナリ出力をBLOBとしてデータベースに格納することをお勧めします。しかし、私はそれをシリアル化しようとすると、私は "キャンバスオブジェクトはシリアル化可能としてマークされていません"というメッセージが表示されます。私は本当にアドバイスを感謝します。Silverlight XAMLオブジェクトのバイナリシリアル化
答えて
Silverlightには、多くのバイナリシリアル化が組み込まれていません。ただし、protobuf-netはSilverlightで動作し、このギャップを埋めるのに役立ちます。現在のビルドでは、(属性を追加することによって)あなたがコントロールする型を本当にシリアライズすることしかできませんが、属性を持たない型を直列化するためのサポートを追加する大きなリファクタリングの途中です。
私は、これが(うまくいけば)安定したビルドとして利用できるようになるまでには約2週間はかかることを期待していますが、それを見て歓迎します。
あなたはまだそれをシリアル化するために何か助けを与える必要があることに注意してくださいが、それは役に立つかもしれません。
特に、データフォーマット(「プロトコルバッファ」)は、処理が高密度で効率的であるように設計されているため、解析速度が向上します。 See here for more(数字は.NETのSilverlightではありません)
実際に解析が問題になる場合は、事前にコンパイルされた「BAML」というXAMLを使用すると役立ちます。これはXAMLファイルのバイナリ表現です。バイナリ形式にはあまりにも一般的なXMLの代わりにはるかに安価なパーサがあるので、これは多くの助けになります。 BAMLは、.NETコンパイラによって内部的に使用され、よりコンパクトなファイルを生成します。 http://www.sharpserializer.com/en/index.htmlを:
詳細については、私はSilverlightで高速なバイナリserlizationのために非常に使いやすいSharpSerializerパッケージを見つけたhttp://stuff.seans.com/2008/07/13/hello-wpf-world-part-2-why-xaml/
も参照してください。 Serializable属性を使用する必要はありませんが、publicメンバーのみを直列化します。
- 1. Scalaバイナリシリアル化ライブラリ
- 2. C# - バイナリシリアル化InvalidCastException
- 3. DateTimeの配列のバイナリシリアル化
- 4. X#とXBoxのF#バイナリシリアル化
- 5. 可変F#レコードのバイナリシリアル化
- 6. XAMLのオブジェクト初期化子
- 7. C++とC#のバイナリシリアル化/逆シリアル化
- 8. バイナリシリアル化vs. JSON vs. xml
- 9. バイナリシリアル化とアプリケーション設定(user.config)
- 10. Silverlightの挿入XAMLは他のXAML
- 11. Silverlight DataGrid Refresh Xaml Files
- 12. SilverlightバインディングDataGridComboBoxColumn Xaml SQL
- 13. JSONなどのプレーンテキストのバイナリシリアル化C
- 14. バイナリシリアル化中のアセンブリ名の変更
- 15. Windows Phone 7用の高速で包括的なバイナリシリアル化フレームワーク
- 16. WPF xamlをSilverlight xamlに変換する
- 17. 更新Silverlightのユーザーコントロールは、XAML
- 18. Silverlight - XAMLの相対DataContext?
- 19. Silverlight XAMLファイルのTextBlockラッピング
- 20. Silverlight XAML名前空間スコープ
- 21. Silverlight - XAMLで国際化を行う方法
- 22. SilverlightのXAMLのネストされたDataContext
- 23. XAMLリストボックスの背景の書式Silverlight
- 24. シリアル化で渡されるデータは何ですか? (バイナリシリアル化)
- 25. シリアル化可能な属性を持たないバイナリシリアル化
- 26. Silverlight Xaml - 子要素の配置
- 27. Silverlight 3およびSilverlight 4条件付きxaml
- 28. 32ビットと64ビットOS間の.NETバイナリシリアル化
- 29. Silverlightの最適化
- 30. Silverlightでのシリアル化
sharpserializerは、公的な原告のみを連載します。また、特定のプロパティ(キャンバスなど)を除外するルールを定義することもできます。開発中は、sharpserializer xml-serializerを使用して、シリアル化されているものを見ることができます。バイナリのシリアライゼーションに変更して、メモリフットプリントを小さくします。 – k3b