
System.Uri 建構監聽位址。System.ServiceModel.EndpointAddress 封裝 WS-Addressing EndpointReference,包含 To、Action、MessageID、ReplyTo 等標頭。繫結 = 通道層工廠元素集合。所有繫結繼承 Binding,暴露 CreateBindingElements() 回傳 BindingElement 陣列。
BasicHttpBinding → TextMessageEncoding + HttpTransport
NetNamedPipeBinding → TransactionFlow + BinaryMessageEncoding + WindowsStreamSecurity + NamedPipeTransport
NetTcpBinding → TransactionFlow + BinaryMessageEncoding + WindowsStreamSecurity + TcpTransport
WSDualHttpBinding → TransactionFlow + ReliableSession + SymmetricSecurity + CompositeDuplex + OneWay + TextMessageEncoding + HttpTransport
WSHttpBinding → TransactionFlow + SymmetricSecurity + TextMessageEncoding + HttpTransport
NetMsmqBinding → BinaryMessageEncoding + MsmqTransport
MsmqIntegrationBinding → MsmqIntegrationBindingElement
WSFederationHttpBinding→ TransactionFlow + SymmetricSecurity + TextMessageEncoding + HttpTransport
NetPeerTcpBinding → PnrpPeerResolver + BinaryMessageEncoding + PeerTransport
繫結決定訊息屬性,選擇正確繫結對成功實現 WCF 系統至關重要。第 8 章詳細介紹。
將物件導向結構映射為訊息結構。三種契約:
[ServiceContract] 介面/類別 + [OperationContract] 方法。描述操作名稱、參數、MEP、Session、安全標頭。[DataContract] + [DataMember]。映射 .NET 型別至 SOAP Body Schema。[MessageContract] + [MessageHeader]/[MessageBodyMember]。完全控制 SOAP Header 與 Body 結構。[ServiceContract]
interface ISomeServiceContract {
[OperationContract]
void SomeOperation(SomeDataContract info);
[OperationContract]
void SomeOtherOperation(SomeMessageContract info);
}
[DataContract]
class SomeDataContract {
[DataMember] public int? Number { get; set; }
[DataMember] public string Status { get; set; }
}
[MessageContract]
class SomeMessageContract {
[MessageHeader] public int? SomeNumber;
[MessageBodyMember] public SomeDataContract MessageBody;
}
契約以屬性標記型別,屬於晚期繫結——不一致性僅在運行時透過反射檢查發現。雖提供擴展性,但需謹慎測試。
ServiceMetadataBehavior.HttpGetEnabled = true + 加入 IMetadataExchange 端點。svcutil.exe 依 WS-MetadataExchange 產生 Proxy 代碼與配置檔 (output.config),實現跨 AppDomain/Machine 呼叫。