通道偵聽器模仿 Berkeley Socket API:綁定 URI、被動偵聽連入訊息、連線建立後透過 AcceptChannel 回傳通道實例供程式接收資料。所有通道定義 Accept 開頭方法,但僅偵聽器類型真正偵聽訊息。
通道偵聽器堆疊中,傳輸層偵聽器位於最底層,唯一綁定位址並開始偵聽。上層偵聽器依序呼叫下層 Accept 方法,直到最底層傳輸偵聽器。面向連線傳輸(TCP、Named Pipe)接收訊息後回傳通道;非連線傳輸(MSMQ)立即回傳通道無需等待。

基礎介面,繼承 ICommunicationObject,定義:
WaitForChannel 同步/非同步等待通道可用Uri 屬性取得偵聽位址GetProperty<T>() 查詢機制不繼承 IChannel,避免偵聽器被誤用為通道,確保堆疊查詢功能正常。
泛型介面,繼承 IChannelListener,泛型限制 TChannel : class, IChannel。引入 Berkeley Socket Accept 模式:
AcceptChannel() / AcceptChannel(TimeSpan)BeginAcceptChannel / EndAcceptChannel偵聽器必須引用特定通道形狀(Shape)並以此建立通道,這與通道「實作」形狀不同。
抽象類別,繼承 ChannelManagerBase、實作 IChannelListener、ICommunicationObject。建構子接受 IDefaultCommunicationTimeouts 設定四大逾時屬性(開啟、關閉、接收、傳送),預設 1 分鐘。Binding 實作此介口,可透過建構子傳遞自訂逾時。
繼承 ChannelListenerBase、實作 IChannelListener<TChannel>。提供 AcceptChannel 實作,核心擴充點為受保護抽象方法:
OnAcceptChannel(TimeSpan)OnBeginAcceptChannel / OnEndAcceptChannel建立泛型 DelegatorChannelListener<TShape>(TShape : class, IChannel):
BindingContext,取得內層偵聽器 _innerListenerWrapChannel:根據 TShape 將內層通道包裝為 DelegatorXxxChannel(接收端形狀:IInputChannel、IReplyChannel、IDuplexChannel 及其 Session 變體)OnAcceptChannel、OnEndAcceptChannel:呼叫內層偵聽器接受通道,非 null 時包裝回傳WaitForChannel、Uri、GetProperty 透傳內層OnOpen、OnClose、OnAbort 等)委派內層並列印追蹤關閉堆疊時,AcceptChannel 回傳 null,包裝方法同步回傳 null。