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