我也在這裏尋找其他一些主題,但我沒有找到解決我的問題。強制WCF在反序列化期間使用現有的緩衝區?
想象一下:
我有一個非常簡單的ServiceContract
不同的OperationContracts
。其中一個OperationContracts
是一個簡單的用例「下載數據傳輸對象」。
的服務看起來像:
...
[OperationContract]
DTO Download(strind Id)
...
類DTO的樣子:
[DataContract]
public class DTO
{
[DataMember]
public string Id;
[DataMember]
public byte[] Data;
}
當然,這是非常簡單的,它工作正常,但我需要我自己來分配DTO的byte[]
!
我的代碼是框架組件的一部分,它在大規模內存限制下並行工作。我不希望WCF分配所有的字節[],我不想讓ManagedHeap再次釋放它們。我需要共享和重用所有並行的現有緩衝區。
所以當我完成我的序列化時,我將在服務器端重新使用緩衝區。 在客戶端,我希望WCF讀取我的緩衝區!
我試着用自己的XmlObjectSerialiers
和自己的OperationBehaviors
一些解決方案,但它沒有工作。
有沒有人有任何其他想法?
爲什麼你希望你的數據作爲成員包含在datacontract中?如果你不想把它發送給客戶端? – Peter
當然我想發送數據給客戶端。但是我想讓wcf在我已經分配的字節[]中傳入數據。 –