學(xué)習(xí)WCF綁定經(jīng)驗分享
WCF框架的使用是一個比較復(fù)雜的學(xué)習(xí)過程。因為它的功能強大,靈活的運用這一工具需要我們不斷的從實踐中去積累經(jīng)驗。在這里就先介紹下WCF綁定的相關(guān)知識。#t#
首先,存在許多可能的通訊模式:消息可能是同步請求/響應(yīng)或異步式的"激活-忘記"模式(fire-and-forget);消息也可能是雙向的;消息能夠被立即傳輸或隊列化操作而該隊列可能是持久性的或易破壞性的。
還存在許多可能的消息傳輸協(xié)議:例如HTTP(或HTTPS),TCP,P2P(端對端網(wǎng)絡(luò)),IPC(命名管道)或MSMQ。也存在一些可能的消息編碼選項:你可以選擇普通文本以支持互操作性,二進制編碼以便于優(yōu)化性能,或MTOM(消息傳輸優(yōu)化機制)以便處理巨大載荷。
也存在一些消息保護選項:你可以選擇不對之進行保護,你也可以使用它們來僅提供傳輸級安全或提供消息級隱私和安全,并且當然,也存在很多種方式用于對客戶端實現(xiàn)認證和授權(quán)。消息傳輸在跨越中間媒體和中斷連接時可能是不可靠的或可靠的端到端式,并且消息可能是以其發(fā)送的方式傳輸?shù)幕蚴且云浣邮辗绞絺鬏數(shù)摹?/p>
通訊服務(wù)可能需要與其它服務(wù)或僅能夠使用基本W(wǎng)eb服務(wù)協(xié)議的客戶端互操作,或者它們能夠使用WS-*現(xiàn)代協(xié)議的核心(例如WS-安全和WS-原子事務(wù))。通訊服務(wù)可能需要與舊式的客戶端通過原始的MSMQ消息進行互操作,或你可能想限制通訊服務(wù)以便僅與另一個WCF服務(wù)或客戶端互操作。
簡言之,通訊存在許多方面的內(nèi)容,包括大量的參數(shù)和決策點。其中,一些選擇可能是互斥的,而另一些選擇可能要求必須使用另外的相應(yīng)選擇。很明顯,客戶端和服務(wù)必須在所有這些選項上相吻合,以達到正確交流的目的。為了簡化并使其更具可管理性,WCF小組共同在綁定中提供了一個這樣的通訊方面集合。
WCF綁定僅僅是對于相協(xié)調(diào)的傳輸協(xié)議、消息編碼、通訊模式、可靠性、安全性、事務(wù)傳播和互操作性的預(yù)封裝。理想情況下,你能夠從通訊服務(wù)代碼中"提取"所有的這些繁重的任務(wù)方面并且允許它專注于實現(xiàn)業(yè)務(wù)邏輯。這樣做可以使你在相當不同的繁重任務(wù)方面使用相同的服務(wù)邏輯,而綁定正好使你能夠?qū)崿F(xiàn)這一目的。
你可以使用提供的WCF綁定,也就是說,你或者可以"濃縮"它們的屬性,或者是從頭編寫通訊自己的定制綁定。一個服務(wù)在它的元數(shù)據(jù)中出版它的綁定選擇,這使得客戶端能夠查詢這種類型和綁定的特定屬性,因為客戶端必須使用與服務(wù)完全一樣的綁定。單個服務(wù)能夠支持在獨立的地址上的多個綁定。
通常,服務(wù)并不指定關(guān)于WCF綁定本身。WCF定義了綁定?;谖谋镜木幋a使一個WCF服務(wù)(或客戶端)能夠通過HTTP與任何其它服務(wù)(或客戶端)進行交流而不考慮它的技術(shù);然而,通過TCP或IPC的二進制編碼傳輸能夠產(chǎn)生***的性能,但是卻以失去極廣泛的互操作性為代價(因為它必須使用WCF到WCF的通訊)。