我們可能需要爲我們的(大型的)C#應用程序中的類編寫我們自己的序列化程序 - BinarySerializer太慢且冗長,並且protobuf-net在基於接口的屬性我們有負載)。在C#中實現我們自己的序列化程序 - 提示和陷阱
有沒有人有任何好的提示和/或警告?我懷疑我們應該使用BinaryWriter和BinaryReader,但是我們還沒有在C#中做太多的小工具,任何陷阱都將不勝感激!
同樣,有沒有人知道我可以看到的源代碼的手動序列化器?
我們可能需要爲我們的(大型的)C#應用程序中的類編寫我們自己的序列化程序 - BinarySerializer太慢且冗長,並且protobuf-net在基於接口的屬性我們有負載)。在C#中實現我們自己的序列化程序 - 提示和陷阱
有沒有人有任何好的提示和/或警告?我懷疑我們應該使用BinaryWriter和BinaryReader,但是我們還沒有在C#中做太多的小工具,任何陷阱都將不勝感激!
同樣,有沒有人知道我可以看到的源代碼的手動序列化器?
考慮Type Convertors。我們在ViewState中廣泛使用它們,它們工作得很好。
不要去切線 - 但將序列化對象注入ViewState是我今天聽到的最可怕的事情 – 2010-08-11 22:22:20
Pete - 這就是ASP.net在維護後期狀態方面的功能。這就是ViewState的用途。 – Fahad 2010-08-12 20:13:43
提示/警告?它可以是一個嚴重的代碼量。我建議編寫一些簡單的代碼可以更容易,該代碼可將現有模型轉換爲簡單的DTO,並可通過您選擇的現有序列化API輕鬆進行序列化。擁有一個DTO層(獨立於域實體)還允許更簡單的維護 - 您可以在不破壞序列化數據的情況下重構您的域實體。
爲自己做的選項(記住,你強調的是,該模型是相當複雜的保留,你是不是位小提琴手):
這是後,你已經想出了一個序列化格式,工作有力,可延伸,並支持你所需要的場景(繼承等)。
我們不是* C#* bit-fiddlers;事實上,我不是什麼人,但我的同事當然是。 – 2010-08-11 22:39:38
我看不出DTO層如何加快序列化。這個問題可能在於.Net BinarySerializer固有的羅嗦,連同所有時髦的反射等等,它必須做一般的工作。 DTO層不會改變,是不是? – 2010-08-12 12:31:31
@Joel - 好吧,也許如果DTO被設計爲適合protobuf-net; p – 2010-08-12 18:31:17
你的時間表是什麼?我可以嘗試整理V2(但我已經說了太久了) – 2010-08-11 21:40:54
DataContractSerializer'怎麼樣? – 2010-08-11 21:48:22
@Marc:那會很棒,但對我們來說可能不夠快,因爲我們需要時間來學習如何正確使用protobuf。 – 2010-08-11 22:36:59