2012-10-08 60 views
0

我開發了一個基於請求類型接受請求和進程的WCF服務。但是,我遇到過,我認爲更多的是設計問題。大多數請求和響應非常快速和簡單,發送和接收的數據量很少,所以這對於標準的緩衝傳輸模式非常有用。但是,有幾種選擇的請求類型可能會返回(從服務到客戶端)大量數據,在這種情況下,我必須將MaxRecievedMessageSize設置得非常高或切換到流式傳輸模式。消息合同是否可以擴展數據合同?

我已經確信,爲個別請求設置角色併爲Streamed請求創建新的Contract/Bindings /等是正確的方向。現在,我面臨的挑戰是我喜歡傳遞一個請求對象(包含請求的內容,類型等),這是一個數據契約。但是,如果我要轉換爲流式傳輸模式,我有傳遞消息合約的限制。

我可以擴展數據合同並將擴展類調用消息合約並且工作嗎?例如:

[DataContract]  
public class RequestObject 

[MessageContract] 
ExtendedRequestObject : RequestObject 

如果我不能走這條路線,確保架構仍然有意義的最佳方法是什麼?我喜歡不得不總是傳遞一個對象,並能夠對該對象進行驗證,而不是使用多個具有多個參數的方法/函數等?

+0

我99.99%地肯定的答案,我直接的問題是,不,我不能用MessageContract擴展DataContract。 – Tada

回答

2

我找不到源代碼,但看起來奇怪而且不可能。基礎級別的數據成員將如何處理?

和繼承似乎沒有必要,如何聚集:

[MessageContract] 
class ExtendedRequestObject 
{ 
    [MessageBodyMember] RequestObject Request; 

} 
+0

我喜歡聚合。我認爲擁有Body/Headers的MessageContract可以正常工作。謝謝! – Tada

相關問題