首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> 關於.NET

WCF 技術內幕(30):訊息——複製訊息、清理機制與章節總結

     編輯:關於.NET

訊息複製:CreateBufferedCopy

有時需從現有訊息建立緩衝模式拷貝。Message.CreateBufferedCopy(maxBufferSize) 回傳 MessageBuffer,呼叫其 CreateMessage() 產生新訊息(狀態 Created)。過程中原訊息狀態從 Created 變為 Copied。若原訊息狀態非 Created,拋 InvalidOperationException。

程式碼示範

Message msg = Message.CreateMessage(MessageVersion.Default, "urn:SomeAction", "Something in the body");
MessageBuffer buffer = msg.CreateBufferedCopy(Int32.MaxValue);
Message msgNew = buffer.CreateMessage();
// msg.State = Copied, msgNew.State = Created

應用場景:PeerChannel 等多參與者場景,單一訊息複製多份發送至不同節點。

訊息清理:IDisposable 與 Close

Message 實作 IDisposable 並定義 Close()。設計上隱藏 Dispose(需轉型呼叫),公開 Close。內部 Dispose 呼叫 Close,效果相同。可用 using 區塊(隱式呼叫 Dispose)。

設計爭議

作者認為此設計不當:Framework 設計規範建議明確實作介面,罕見公開 Close 卻隱藏 Dispose。開發者期望同時見到兩者。雖為避免混淆,但反而增加困惑。

章節總結

  • Message 是 WCF 通訊基本單位,雖常隱於幕後但核心地位不變
  • 本章涵蓋:多種建立訊息方法、序列化/編碼/解碼/反序列化、訊息標頭區塊操作、複製與清理
  • 提醒:WCF 各層級在幕後忙碌執行本章所述工作
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved