2010-08-04 59 views
3

我們有C#實體類映射到我們的一些SQL Server數據庫表。我們需要能夠序列化這些類,以便將它們從服務器通過WCF發送回客戶端。對於每個SQL Server數據類型,我們在關聯的實體中都有相應的C#CLR數據類型。哪些C#數據類型不是WCF可序列化的?

我們有一些SQL Server數據類型,例如我們需要映射到C#CLR數據類型的Image和VarBinary,所以我們可以將數據傳回客戶端。問題是我不確定用於這些Image和VarBinary SQL類型的CLR數據類型,以便我們可以通過WCF對它們進行序列化。

謝謝。

回答

1

除非你使用二進制傳輸,我想到的是WCF是發送二進制因爲SOAP和JSON是在處理它可怕了非常差的選擇。例如,您可以傳遞一個byte []數組,但這會非常冗長(特別是在SOAP中)。

可能更適合BASE64將數據轉換爲字符串併發送。

+0

有趣的想法。你有沒有這樣做的例子,在兩個方向? – 2010-08-04 15:25:41

1

我認爲米奇在他的答案中包含的鏈接絕對有幫助。另一件事可以幫助您確定使用什麼CLR類型,您將使用哪種綁定類型?如果您使用NetXXX綁定(例如NetTcpBinding),則假定客戶端將是.NET客戶端,並且消息編碼已針對該客戶端進行了優化。對於這些類型而不是base64字符串,最好使用字節數組。如果你要提供互操作性(並且使用WebHttpBinding或WSHttpBinding或其他可互操作的綁定),那麼base64字符串可能是更好的選擇(正如Kirk建議的那樣)。它不會針對速度/大小進行優化,但是您不依賴於客戶端上的.NET。

希望這會有所幫助!