我仍然感到困惑時,它是適合使用的消息類型在WCF像下面使用WCF消息
[ServiceContract]
public interface IMyService
{
[OperationContract]
Message GetData();
[OperationContract]
void PutData(Message m);
}
爲什麼要使用它?
你可以用它來流式傳輸嗎?
感謝
我仍然感到困惑時,它是適合使用的消息類型在WCF像下面使用WCF消息
[ServiceContract]
public interface IMyService
{
[OperationContract]
Message GetData();
[OperationContract]
void PutData(Message m);
}
爲什麼要使用它?
你可以用它來流式傳輸嗎?
感謝
儘管Tim列出的原因是有效的,但我們直接在我們的服務中使用消息來創建一個超級路由服務。 我們有一個服務可以接受任何方法調用,客戶端由多個來源提供的wsdls生成。
此服務將接收消息,檢查其內容並相應地路由它。 所以在我看來,如果你想更接近線路,或者當你不知道傳入消息的類型時,可以直接在簽名中使用消息。
流是一個獨立的概念比消息簽名,流是由非常具體的綁定和安全機制下的wcf支持和方法簽名必須非常具體(即它應該返回/接受流)。同樣在流式傳輸中,實際的數據流在soap消息的範圍之外傳播。
MSDN列出瞭如下原因直接使用信息類:
當你需要創建傳出的消息內容(例如的另一種方式,直接從文件創建一個消息在磁盤上)而不是序列化.NET Framework對象。
當您需要使用傳入消息內容(例如,當您想將XSLT轉換應用於原始XML內容)而不是反序列化到.NET Framework對象的替代方式時。
無論消息內容如何(例如,在構建路由器,負載均衡器或發佈 - 訂閱系統時路由或轉發消息),您都需要以常規方式處理消息。
有關更多詳細信息,請參閱Using the Message Class。
編輯以解決問題流
我沒有找到我通過谷歌快速掃描一個明確的答案,但上面的文章指出:「客戶端和服務之間的所有通信最終導致信息情況下被髮送並收到「 - 所以我會認爲它可以直接用於流媒體。
老實說,我有問題,理解這些答案。像點1一樣,爲什麼你需要一個消息結構來從文件發送消息。你可以加載文件,只需在一個簡單的.net類中設置屬性?對不起,如果我很慢 – TheWommies
如果第3點可以澄清,那很好。不確定使用消息結構可以幫助您平衡負載嗎? – TheWommies
點2的另一個很好的例子是一個POX(Plain Old Xml)服務,在這個服務中你不知道內容是什麼,直到它到達。 – IainJMitchell
WCF4不會引入專門用於路由的路由服務嗎?或者是消息數據包只是做它的另一種方式 – TheWommies
,但是對於其他的wcf服務,我們有非常自定義的路由行爲.... –