在原子和金錢世界中,契約是兩個或多個組織以乙個已知的**提供商品和服務的合同。在位元和服務的世界中,契約有類似的功能:它是兩個或多個組織之間確定訊息交換和訊息條款及條件的合同。 契約是由服務終結點傳送或接收的訊息的描述。每乙個終結點都由abcs定義:乙個訊息傳送到的網路上的位址,乙個描述訊息如何傳送的繫結,乙個描述訊息格式的契約。
記住服務實際上是終結點集合,終結點用**實現了特殊演算法。它們可以實現高階別的商業功能,比如進入乙個訂單履行系統,或者可以更細粒度,比如尋找客戶的 位址。高階功能一般需要複雜的資料結構,而針對性的功能通常需要更多基本資料型別。在任何一種情況下,終結點必須確認它要完成的操作和它期望的資料格式。 它們一起構成了契約。
wcf中三種型別的契約:
服務契約。服務契約描述了服務的功能性操作的實現。服務契約將.net型別中的類方法對映成wsdl服務,埠型別和操作。在服務契約中的操作契約描述服務操作,服務契約是用來描述服務功能的方法。
資料契約。資料契約描述了被服務端用來與客戶端通訊的資料結構。資料契約將clr型別對映成xml元資料定義(xsd)而且定義了它們如何序列化和反序列化。資料契約描述了由服務操作傳送和接收的所有資料。
訊息契約。訊息契約將clr型別對映成soap訊息而且描述了soap訊息格式並影響訊息中wsdl和xsd的定義。訊息契約提供了對soap訊息頭和訊息體的精確控制。
為了使契約可以再最廣泛的系統之間共用,它們被使用網路服務描述語言(wsdl)表達。所以,在繼續進行更加深入的契約討論之前,對wsdl進行乙個間斷的介紹是有幫助的。根據w3c的標準,行業**商(microsoft, ibm, 等等)定義了wsdl規範。
wsdl是一種用於描述作為乙個端點對包含任何面向文件或程式為導向的資訊服務,網路服務設 置的xml格式。操作和訊息被抽象的描述,然後繫結到乙個具體的網路協議和訊息格式來定義乙個終結點。相關具體的終結點與抽象終結點(服務)連線到一起。 wsdl可以擴充套件描述終結點和訊息而不必考慮通訊中的訊息格式或者網路協議;然而,文件中唯一描述的繫結是關於如何使用wsdl與soap 1.1,http get/post和mime進行連線。
詳細說明在www.w3.org/tr/wsdl, 描述了關鍵概念和支援細節以便於廠商如微軟可以生成工具來生成和使用wsdl。主要的wsdl組成在表2.1中介紹,從公開規則中介紹和擴充套件。
**自出處:
WCF 第二章 契約 服務契約
服務契約描述了由服務終結點實現的介面操作。服務契約引用訊息格式並描述它們是怎麼被交換的。訊息格式更進一步被資料契約和訊息契約描述。這一部分主要涉及由服務契約實現的訊息交換。wcf在設計時和執行時使用服務契約。在設計階段,它們確定應該在wsdl理暴露為終結點的 的類。乙個使用 servicecontr...
WCF 第二章 契約 資料契約等效
使用集合 集合是.net中非常方便的資料結構,它集中了動態記憶體分配,列舉和列表指向的優勢。儘管很有用,但是沒有xsd或wcf的標準與乙個集合等效。因此,講乙個集合序列化為xml,wcf需要將集合按照陣列對待。事實上,乙個集合的線上級別 序列化與乙個陣列是一致的。另外對集合 型別繼承於icollec...
WCF 第二章 契約 雙向操作
請求 回覆通訊是客戶端與服務端最普遍的訊息交換模式。通訊在客戶端被初始化,客戶端傳送乙個請求訊息給服務端,然後服務端傳送乙個返回訊息給客戶 端。如果返回訊息很快,那麼通訊過程可以是同步的,所以客戶端應用程式阻塞等待反饋。如果請求和回覆之間會有延時,請求 回覆模式可以在客戶端使用標 準.net技術實現...