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

WCF 技術內幕(36):通道——建立自訂通道與章節總結

     編輯:關於.NET

自訂通道設計原則:委派模式

本章建立 DelegatorChannel:在主控台列印追蹤訊息,示範通道生命週期與方法呼叫順序。核心設計——委派模式:通道執行特定工作後,將呼叫委派給堆疊下一個通道。完整代碼需第 8 章 Binding 串聯才能執行。

基底類別:DelegatorChannelBase<TShape>

  • 繼承 ChannelBase,泛型 TShape : class, IChannel
  • 欄位:_innerChannel(下一個通道參考)、_source(追蹤字串前綴)
  • 建構子:接收 ChannelManagerBase(工廠參考)、innerChannel、source,驗證非 null,設定追蹤前綴
  • 屬性 InnerChannel 供衍生類別存取
  • 實作 GetProperty<T>() 透傳查詢
  • 覆寫所有 CommunicationObject 狀態機方法(OnOpen、OnClose、OnAbort、OnBeginOpen 等),列印追蹤並委派給 _innerChannel

資料報通道:輸入與輸出

DelegatorInputChannel<TShape>

  • 繼承 DelegatorChannelBase<TShape>、實作 IInputChannel,TShape : class, IInputChannel
  • 建構子設定追蹤字串含泛型名稱
  • 實作 BeginReceive、BeginTryReceive、BeginWaitForMessage 等,列印追蹤並委派 InnerChannel

DelegatorOutputChannel<TShape>

  • 繼承 DelegatorChannelBase<TShape>、實作 IOutputChannel,TShape : class, IOutputChannel
  • 實作 BeginSend、Send、RemoteAddress、Via 等,同樣列印追蹤並委派

雙工通道:複用資料報實作

DelegatorDuplexChannel

  • 繼承 DelegatorInputChannel<IDuplexChannel>、實作 IDuplexChannel
  • 因 IDuplexChannel = IInputChannel + IOutputChannel,繼承輸入通道基類後,僅需補充實作 IOutputChannel 成員(BeginSend、Send、RemoteAddress、Via)

Session 通道:增加 Session 屬性

DelegatorDuplexSessionChannel

  • 繼承 DelegatorDuplexChannel、實作 IDuplexSessionChannel
  • 新增 _innerSessionChannel 欄位儲存同一物件的 IDuplexSessionChannel 參考
  • 實作 Session 屬性:列印追蹤並回傳 _innerSessionChannel.Session

同樣模式可擴充至 IInputSessionChannel、IOutputSessionChannel、IRequestSessionChannel、IReplySessionChannel。

章節總結

  • 通道是 WCF 訊息處理的物理單元,雖不直接出現在應用層 API,但為核心構件
  • 本章涵蓋:通道狀態機、關鍵介面與類型、自訂通道委派模式實作
  • 第 7、8 章將示範如何在 WCF 程式中使用自訂通道
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved