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

WCF 技術內幕(37):通道管理器——概述與核心概念

     編輯:關於.NET

概述:通道管理器的雙重身分

使用者代碼不直接建立通道,由專門工廠類型完成。接收端稱為「通道偵聽器」,發送端稱為「通道工廠」,統稱「通道管理器」。雖非通道,但屬通道層一部分。通道依功能分類(TCP、WS-ReliableMessaging 等),管理器亦同:特定功能的管理器建立對應功能的通道,且不重複建立。管理器可建立多種形狀通道,但功能域相同。

通道管理器的共同特性

  • 執行時組織成堆疊,組織方式映射通道堆疊
  • 實作 ICommunicationObject,擁有通道狀態機
  • 實作查詢機制(GetProperty<T>())

通道管理器基類:ChannelManagerBase

早期設計:緊密耦合的生命週期

早期 WCF(Indigo 時期)中,ChannelManagerBase 追蹤所建通道,管理器關閉時連帶關閉所有通道。發送端適用,但接收端有嚴重問題:單一 URI 僅能有一個偵聽器,需頻繁重建堆疊時,關閉舊偵聽器可能耗時極長(涉及 WS-RM 訊息、交易提交等),阻塞新偵聽器啟動。

現行架構:職責分離

目前版本中,ChannelManagerBase 不再管理通道生命週期,改由通道工廠類別層次處理。基類職責簡化為:

  1. 強制實作通道狀態機
  2. 實作查詢機制
  3. 傳遞 Binding 逾時屬性給通道

接收端得以關閉舊偵聽器處理殘留工作,同時啟動新偵聽器服務新訊息,大幅提升吞吐量。

本章學習路線圖

  • 第 7 章:通道偵聽器與通道工廠內部類型、物件模型、自訂範例
  • 第 8 章:Binding 與 BindingElement 完整串聯建立流程
  • 本章程式碼為部分實作,完整可執行代碼見第 8 章
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved