快速上手WCF基礎知識介紹
WCF還是比較常用的,在這里拿出來和大家分享一下關于WCF基礎知識的介紹,希望對大家有用。WCF基礎功能都放在一個單獨的程序集System.ServiceModel.dll中。WCF的幾個最重要的技術元素包括:綁定、契約、端點。
#T#如前所述,綁定封裝了通道的組成順序與處理細節,它直接決定了WCF的通信方式,消息的編碼方式,通道的協議,消息傳遞的可靠性以及安全等內容。通過使用綁定,我們就無需了解消息在WCF通道中的實現細節,從而簡化程序員的開發。正是因為此,WCF為開發人員提供了多個內置綁定,基本上涵蓋了WCF應用的大部分場景。以下是Aaron Skonnard在《WCF深度綁定》一文中列舉的內置綁定:
綁定類名稱 |
傳輸 |
消息編碼 |
消息版本 |
安全模式 |
可靠消息傳送 |
事務流(默認情況下禁用) |
BasicHttpBinding |
HTTP |
文本 |
SOAP 1.1 |
無 |
不支持 |
不支持 |
WSHttpBinding |
HTTP |
文本 |
SOAP 1.2 WS-Addressing 1.0 |
消息 |
禁用 |
WS-AtomicTransactions |
WSDualHttpBinding |
HTTP |
文本 |
SOAP 1.2 WS-Addressing 1.0 |
消息 |
啟用 |
WS-AtomicTransactions |
WSFederationHttpBinding |
HTTP |
文本 |
SOAP 1.2 WS-Addressing 1.0 |
消息 |
禁用 |
WS-AtomicTransactions |
NetTcpBinding |
TCP |
二進制 |
SOAP 1.2 |
傳輸 |
禁用 |
OleTransactions |
NetPeerTcpBinding |
P2P |
二進制 |
SOAP 1.2 |
傳輸 |
不支持 |
不支持 |
NetNamedPipesBinding |
命名管道 |
二進制 |
SOAP 1.2 |
傳輸 |
不支持 |
OleTransactions |
NetMsmqBinding |
MSMQ |
二進制 |
SOAP 1.2 |
消息 |
不支持 |
不支持 |
MsmqIntegrationBinding |
MSMQ |
不支持(使用 WCF 之前的序列化格式) |
不支持 |
傳輸 |
不支持 |
不支持 |
CustomBinding |
您決定 |
您決定 |
您決定 |
您決定 |
您決定 |
您決定 |
每種綁定對應不同的傳輸協議、消息編碼格式和版本以及安全、可靠性和事務模式。WCF基礎功能也提供了擴展綁定的方式,例如通過CustomBinding或者定義派生與Binding的類。
WCF 的契約包括服務契約、數據契約和消息契約(特別的,還包括了錯誤契約,用于異常的處理)。其中服務契約為面向服務應用程序的核心,通過它可以定義服務。數據契約則為服務所要傳遞的數據。由于服務的調用需要跨進程或機器進行通信,就需要服務數據必須能夠被序列化和反序列化。雖然.NET本身提供了數據的序列化功能,但WCF的數據契約更加符合服務數據的定義習慣。至于消息契約,則可以將服務數據定義為消息,包括XML文本格式、MTOM(消息傳輸優化機制)格式和二進制格式。