WSDL信息模型充分利用了抽象規(guī)范與規(guī)范具體實現(xiàn)的分離,也就是分離了服務(wù)接口定義(抽象接口)與服務(wù)實現(xiàn)定義(具體端點)。 抽象接口規(guī)范描述了終端的處理能力,它在WSDL中表示為portType。束定機制 (binding mechanism)在WSDL中表示為binding元素,它使用特定的通信協(xié)議、數(shù)據(jù)編碼模型和底層通信協(xié)議,將Web服務(wù)的抽象定義映射至特定實現(xiàn)。若束定結(jié)合了實現(xiàn)的訪問地址,抽象端點也就成為可供服務(wù)請求者調(diào)用的具體端點(concrete endpoint),WSDL的port元素表示了這一結(jié)合。 抽象接口可以支持任何數(shù)量的操作(operations)。操作是由一組消息(messages)定義,消息定義了操作的交互定式。與抽象的消息、操作概念相對應(yīng)的具體實現(xiàn)是由binding元素指定。與XML應(yīng)用相同,WSDL模式定義了幾個高層元素,或稱為主要元素。在WSDL中,Web服務(wù)描述中的主要元素如下: Types,定義了Web服務(wù)使用的所有數(shù)據(jù)類型集合,可被元素的各消息部件所引用。它使用某種類型系統(tǒng)(一般地使用XMLSchema中的類型系統(tǒng))。 Message,通信消息數(shù)據(jù)結(jié)構(gòu)的抽象類型化定義。使用Types所定義的類型來定義整個消息的數(shù)據(jù)結(jié)構(gòu)。 Operation,對服務(wù)中所支持操作的抽象描述。一般單個Operation描述了一個訪問入口的請求/響應(yīng)消息對。 PortType,對于某個訪問入口點類型所支持操作的抽象集合。這些操作可以由一個或多個服務(wù)訪問點來支持。 Binding,包含了如何將抽象接口的元素(portType)轉(zhuǎn)變?yōu)榫唧w表示的細(xì)節(jié),具體表示也就是指特定的數(shù)據(jù)格式和協(xié)議的結(jié)合;特定端口類型的具體協(xié)議和數(shù)據(jù)格式規(guī)范的綁定。 Port,定義為協(xié)議/數(shù)據(jù)格式綁定與具體Web訪問地址組合的單個服務(wù)訪問點。 Service,這是一個粗糙命名的元素,代表端口的集合;相關(guān)服務(wù)訪問點的集合。
因此,portType(與message和type元素的細(xì)節(jié)相結(jié)合)描述了Web服務(wù)是什么,binding元素描述了如何使用Web服務(wù),port及service元素描述了Web服務(wù)的位置。2、WSDL對象結(jié)構(gòu)圖
從圖2所示的WSDL對象結(jié)構(gòu)圖可知,一個WSDL文檔中可以包含一個Types,多個Message、PortType、Binding和Service。
?
其中,Types是一個數(shù)據(jù)類型定義的容器,包含了所有在消息定義中需要的XML元素的類型定義。 Message具體定義了在通信中使用的消息的數(shù)據(jù)結(jié)構(gòu),Message元素包含了一組Part元素,每個Part元素都是最終消息的一個組成部分,每個Part都會引用一個DataType來表示它的結(jié)構(gòu)。Part元素不支持嵌套(可以使用DataType來完成這方面的需要),都是并列出現(xiàn)。 PortType具體定義了一種服務(wù)訪問入口的類型(傳入/傳出消息的模式及其格式),一個PortType可以包含若干個Operation,而一個Operation則是指訪問入口支持的一種類型的調(diào)用。在WSDL里面支持四種訪問入口調(diào)用的模式:1) 單請求; 2) 單響應(yīng); 3) 請求/響應(yīng); 4) 響應(yīng)/請求。在這里請求指的是從客戶端到Web服務(wù)端,而響應(yīng)指的是從Web服務(wù)端到客戶端。PortType的定義中會引用消息定義部分的一個到兩個消息,作為請求或響應(yīng)消息的格式。 Service描述的是一個具體的被部署的Web服務(wù)所提供的所有訪問入口的部署細(xì)節(jié),一個Service往往會包含多個服務(wù)訪問入口,而每個訪問入口都會使用一個Port元素來描述。 Port描述的是一個服務(wù)訪問入口的部署細(xì)節(jié),包括通過哪個Web地址(URL)來訪問,應(yīng)當(dāng)使用怎樣的消息調(diào)用模式來訪問等。其中消息調(diào)用模式則是使用Binding結(jié)構(gòu)來表示。 Binding結(jié)構(gòu)定義了某個PortType與某一種具體的網(wǎng)絡(luò)傳輸協(xié)議或消息傳輸協(xié)議相綁定,從這一層次開始,描述的內(nèi)容就與具體服務(wù)的部署相關(guān)了。比如可以將PortType與SOAP/HTTP綁定,也可以將PortType與MIME/SMTP相綁定等。
Powered by: BlogJava Copyright © 風(fēng)太少