我開發了一個基於請求類型接受請求和進程的WCF服務。但是,我遇到過,我認爲更多的是設計問題。大多數請求和響應非常快速和簡單,發送和接收的數據量很少,所以這對於標準的緩衝傳輸模式非常有用。但是,有幾種選擇的請求類型可能會返回(從服務到客戶端)大量數據,在這種情況下,我必須將MaxRecievedMessageSize設置得非常高或切換到流式傳輸模式。消息合同是否可以擴展數據合同?
我已經確信,爲個別請求設置角色併爲Streamed請求創建新的Contract/Bindings /等是正確的方向。現在,我面臨的挑戰是我喜歡傳遞一個請求對象(包含請求的內容,類型等),這是一個數據契約。但是,如果我要轉換爲流式傳輸模式,我有傳遞消息合約的限制。
我可以擴展數據合同並將擴展類調用消息合約並且工作嗎?例如:
[DataContract]
public class RequestObject
[MessageContract]
ExtendedRequestObject : RequestObject
如果我不能走這條路線,確保架構仍然有意義的最佳方法是什麼?我喜歡不得不總是傳遞一個對象,並能夠對該對象進行驗證,而不是使用多個具有多個參數的方法/函數等?
我99.99%地肯定的答案,我直接的問題是,不,我不能用MessageContract擴展DataContract。 – Tada