我嘗試在WCF/Silverlight應用程序中使用protobuf-net來提高大對象數組的序列化性能。我可以在服務代碼中序列化/反序列化類(添加Order =等)。如何在Silverlight WCF生成的服務中使用protobuf-net
但是,當我嘗試應用ProtoBehavior並從Silverlight調用啓用protobuf的服務方法時,我得到空值而不是數據(或錯誤)。
我想這是因爲:
- ProtoBehavior是失去了在Silverlight中生成的服務代碼;
- 域類(類型)不在重用的程序集中,它們在客戶端重新生成,並且Order =丟失。
但是目前我無法改變這兩點。有沒有一種方法可以使用protobuf-net而不重構(相當大)的項目,以便與域類共享ASP.NET/Silverlight組件?
我甚至認爲如果沒有其他解決方案來調整Reference.cs以添加缺少的行爲和Order =到適當的成員(通過perl/regex腳本)會更容易,但是我需要調整什麼,以及它會起作用嗎?
對,由於某種原因生成Order =僅在生成的reference.cs類中的第一個屬性上丟失,所有其他人都擁有它,但是偏移量爲-1。很奇怪。但現在通過解決這個問題並通過線路發送字節[],我可以恢復我的數據。所以,在Silverlight中沒有辦法使用ProtoBehavior,必須堅持byte []?沒什麼大不了的,但仍然...因爲類型產生了,這將需要額外的努力來強制類生成,等等。 – queen3 2010-09-09 10:06:31
@ queen3 - 不是我所知道的。不過,我確實知道有人(不是我)在C#的RPC上做了很多工作;也許這將在Silverlight中作爲WCF的替代*工作?我還沒有時間玩它呢。 – 2010-09-09 11:33:01