WCF ABC實質內容介紹
在WCF中,有一種叫做ABC的總稱,可能對于初學者來說還不是很明白他們都代表了什么。那么在這里,我們將會根據WCF ABC的主要內容做一個詳細的闡述,幫助大家理解,提高大家的應用技術。#t#
WCF實際上是構建了一個基于SOA(Service Oriented Architecture)框架,這個框架實現了在互聯系統中各個Application之間如何通信。使得開發者和設計者在構建分布式系統中,無需在考慮如何去實現通信相關的問題,更加關注與系統的業務邏輯本身。而在WCF 框架中,各個Application之間的通信是由Endpoint來實現的。
Endpoints是WCF實現通信的核心要素。一個WCF Service由一個Endpoints集合組成,每個Endpoint就是用于通信的入口,客戶端和服務端通過Endpoint交換信息。
Endpoint由三部分組成:Address,Binding,Contract。便于記憶,我們往往將這三部分稱為是Endpoint的WCF ABC。
Address: Address通過一個URI唯一地標識一個Endpoint,并告訴潛在的WCF service的調用者如何找到這個Endpoint。所以Address解決了Where to locate the WCF Service?Binding: Binding實現在Client和Service通信的所有底層細節。比如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轉化成為相對應的Message Exchange Pattern——MEP(Request/Response; One-way; Duplex)。所以Contract解決的是What functionalities do the Service provide?
Behavior: Behavior的主要作用是定制Endpoint在運行時的一些必要的Behavior。比如Service 回調Client的Timeout;Client采用的Credential type;以及是否支持Transaction等。
當我們Host一個WCF Service的時候,我們必須給他定義一個或多個Endpoint,然后service通過這個定義的Endpoint進行監聽來自Client端的請求。當我們的Application需要調用這個Service的時候,因為Client 和Service是通過Endpoint的進行通信的, 所以我們必須為我們的Application定義Client端的Endpoint。
只有當Client的Endpoint和Service端某個Endpoint相互匹配(Service端可以為一個Service定義多個Endpoint),Client端的請求才能被Service端監聽到。也就是說,我們只有在Client具有一個與Service端完全匹配的Endpoint,我們才能調用這個Service。而這種匹配是比較嚴格的,比如從匹配Address方面,Client端和Service端的Endpoint Address不僅僅在URI上要完全匹配Service, 他們的Headers也需要相互匹配。對于Binding, 一般地,Client需要有一個與Service端完全一樣的Binding,他們之間才能通信。
以上就是我們為大家總結的WCF ABC的相關概念。