通道形狀對應第 3 章訊息交換模式(MEP)。.NET 介面天然適合區分形狀。對應表:
| MEP | 發送者形狀 | 接收者形狀 |
|---|---|---|
| 資料報 | IOutputChannel | IInputChannel |
| 請求/回覆 | IRequestChannel | IReplyChannel |
| 雙工 | IDuplexChannel | IDuplexChannel |
| P2P | IDuplexChannel | IDuplexChannel |
資料報發送者僅能發送(Send),接收者僅能接收(Receive);請求/回覆雙方皆可收發;雙工雙方皆可自由收發,形狀相同。
WCF Session 為通道層級建構,用於關聯多個訊息。不同通道有不同關聯方式:TCP 依 Socket,WS-RM 依訊息標頭 ID。共同特徵:擁有識別碼供基礎設施模組關聯訊息。
public interface ISession { string Id { get; } }
public interface ISessionChannel<T> where T : ISession { T Session { get; } }
| MEP | 發送者形狀 | 接收者形狀 |
|---|---|---|
| 資料報 | IOutputSessionChannel | IInputSessionChannel |
| 請求/回覆 | IRequestSessionChannel | IReplySessionChannel |
| 雙工 | IDuplexSessionChannel | IDuplexSessionChannel |
| P2P | IDuplexSessionChannel | IDuplexSessionChannel |
IDuplexSessionChannel = IDuplexChannel + ISessionChannel<IDuplexSession>。形狀雖同為雙工,但 Session 變體實作 ISessionChannel<T>,為不同形狀。
IOutputChannel,服務端 IInputChannelIRequestChannel,服務端 IReplyChannelIDuplexChannel