我需要發送,並通過WCF接收包含幾個小領域,再加上一個大的XML字符串對象,像這樣:通過WCF發送大型Xml字符串的最有效的解決方案?
[DataContract]
public class ServiceResponse
{
[DataMember]
public int Id { get; set;}
[DataMember]
public string Xml {get; set;}
}
我必須使用一個基於HTTP綁定,但服務是內部的,所以合約dll將被共享。 Xml字符串可能會達到幾MB。該服務允許通過客戶端機器在服務器之間傳輸數據,因此第一次客戶端調用將檢索大量的Xml,將其保存到本地磁盤,然後第二次調用將數據從磁盤傳輸到另一個其他盒子上的另一個服務實例。所以客戶從字面上保存數據並轉發它,根本沒有邏輯或處理。
我需要最有效的機制 - 意味着小負載和快速 - 用於發送這些對象。
一些問題:
- 什麼是有效載荷發送大塊的XML的最有效的方法是什麼?
- 在使用
BinaryFormatter
通過線路發送然後使用Stream
類型作爲服務操作中的參數之前,將對象序列化到MemoryStream
有任何優勢嗎? - 對於幾MB的消息,是否使用
Streamed
傳輸模式有什麼區別?
我不能使用像Protobuf-net(悲傷)的第三方庫。
欣賞任何意見...
「幾個小領域,加一個大的Xml字符串「。他並不是說該對象被序列化爲XML,而是該對象包含一個xml字符串。話雖如此,我認爲你的答案仍然是正確的。 – aquinas 2013-02-25 21:51:49
不好意思,說不能用protobuf。在Xml上,不,這不是一個對象的表示,它實際上是Xml數據。所以我建議將Xml轉換爲二進制。 – MalcomTucker 2013-02-25 21:52:55
@MalcomTucker:當BinaryFormatter是一個選項時,爲什麼沒有protobuf? – 2013-02-25 21:53:51