WCF ABC實(shí)質(zhì)內(nèi)容介紹
在WCF中,有一種叫做ABC的總稱,可能對于初學(xué)者來說還不是很明白他們都代表了什么。那么在這里,我們將會根據(jù)WCF ABC的主要內(nèi)容做一個(gè)詳細(xì)的闡述,幫助大家理解,提高大家的應(yīng)用技術(shù)。#t#
WCF實(shí)際上是構(gòu)建了一個(gè)基于SOA(Service Oriented Architecture)框架,這個(gè)框架實(shí)現(xiàn)了在互聯(lián)系統(tǒng)中各個(gè)Application之間如何通信。使得開發(fā)者和設(shè)計(jì)者在構(gòu)建分布式系統(tǒng)中,無需在考慮如何去實(shí)現(xiàn)通信相關(guān)的問題,更加關(guān)注與系統(tǒng)的業(yè)務(wù)邏輯本身。而在WCF 框架中,各個(gè)Application之間的通信是由Endpoint來實(shí)現(xiàn)的。
Endpoints是WCF實(shí)現(xiàn)通信的核心要素。一個(gè)WCF Service由一個(gè)Endpoints集合組成,每個(gè)Endpoint就是用于通信的入口,客戶端和服務(wù)端通過Endpoint交換信息。
Endpoint由三部分組成:Address,Binding,Contract。便于記憶,我們往往將這三部分稱為是Endpoint的WCF ABC。
Address: Address通過一個(gè)URI唯一地標(biāo)識一個(gè)Endpoint,并告訴潛在的WCF service的調(diào)用者如何找到這個(gè)Endpoint。所以Address解決了Where to locate the WCF Service?Binding: Binding實(shí)現(xiàn)在Client和Service通信的所有底層細(xì)節(jié)。比如Client與Service之間傳遞的Message是如何編碼的——text/XML, binary,MTOM;這種Message的傳遞是采用的哪種Transport——TCP, Http, Named Pipe, MSMQ; 以及采用怎樣的機(jī)制解決Secure Messaging的問題——SSL,Message Level Security。
所以Binding解決的是How to communicate with service?
Contract: Contract的主要的作用是暴露某個(gè)WCF Service所提供的所有有效的Functionality。從Message Exchange的層面上講,Contract實(shí)際上是抱每個(gè)Operation轉(zhuǎn)化成為相對應(yīng)的Message Exchange Pattern——MEP(Request/Response; One-way; Duplex)。所以Contract解決的是What functionalities do the Service provide?
Behavior: Behavior的主要作用是定制Endpoint在運(yùn)行時(shí)的一些必要的Behavior。比如Service 回調(diào)Client的Timeout;Client采用的Credential type;以及是否支持Transaction等。
當(dāng)我們Host一個(gè)WCF Service的時(shí)候,我們必須給他定義一個(gè)或多個(gè)Endpoint,然后service通過這個(gè)定義的Endpoint進(jìn)行監(jiān)聽來自Client端的請求。當(dāng)我們的Application需要調(diào)用這個(gè)Service的時(shí)候,因?yàn)镃lient 和Service是通過Endpoint的進(jìn)行通信的, 所以我們必須為我們的Application定義Client端的Endpoint。
只有當(dāng)Client的Endpoint和Service端某個(gè)Endpoint相互匹配(Service端可以為一個(gè)Service定義多個(gè)Endpoint),Client端的請求才能被Service端監(jiān)聽到。也就是說,我們只有在Client具有一個(gè)與Service端完全匹配的Endpoint,我們才能調(diào)用這個(gè)Service。而這種匹配是比較嚴(yán)格的,比如從匹配Address方面,Client端和Service端的Endpoint Address不僅僅在URI上要完全匹配Service, 他們的Headers也需要相互匹配。對于Binding, 一般地,Client需要有一個(gè)與Service端完全一樣的Binding,他們之間才能通信。
以上就是我們?yōu)榇蠹铱偨Y(jié)的WCF ABC的相關(guān)概念。