簡體   English   中英

Silverlight XAML對象的二進制序列化

[英]Binary serialization of Silverlight XAML object

我正在開發需要顯示復雜的2d矢量圖形的Silverlight應用程序。 它從服務器下載壓縮的XAML文件,解析它(XamlRead)並注入頁面上的布局根目錄。 這適用於相當小的xaml文件。 問題是我需要使用更大的文件(更多的內容)。 例如,我的一個未壓縮的xaml文件大20 MB,而XamlRead方法需要很長的工具來解析它。 我的問題是,是否有辦法在服務器端進行所有解析。 最好只將XamlRead方法的序列化二進制輸出存儲為數據庫中的BLOB。 但是,當我嘗試序列化它時,我收到一條消息“Canvas對象未標記為可序列化”。 我真的很感激任何建議。

Silverlight內置了很多二進制序列化; 然而, protobuf-net適用於Silverlight,可能有助於填補這一空白。 在當前版本中,您只能真正序列化您控制的類型(由於添加屬性) - 但是,我正處於一個大型重構的中間(除其他外)添加對沒有屬性的序列化類型的支持。

我希望它還有2個星期可以作為(希望)穩定的版本,但是歡迎你來看看它。

請注意,您仍然需要提供一些幫助(告訴它您希望它序列化的內容),但它可能很有用。

特別是,數據格式(“協議緩沖區”)被設計為密集且高效的處理,這應該提高解析速度。 請參閱此處了解更多信息(數字來自主.NET,而不是Silverlight)

我發現SharpSerializer軟件包非常容易用於Silverlight中的快速二進制serlization: http//www.sharpserializer.com/en/index.html 您不需要使用Serializable屬性 - 但它只序列化公共成員。

如果解析確實是問題,那么使用名為'BAML'的預編譯XAML可能會有所幫助。 這是XAML文件的二進制表示。 由於二進制格式具有更便宜的解析器而不是太通用的XML,這有很大幫助。 .NET編譯器也在內部使用BAML來生成更緊湊的文件。

有關詳細信息,另請參閱http://stuff.seans.com/2008/07/13/hello-wpf-world-part-2-why-xaml/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM