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