摘要:概述Web服務(wù)的體系結(jié)構(gòu)、核心技術(shù)以及MapForce簡要介紹,并以實(shí)例說明如何利用MapForce創(chuàng)建Web服務(wù)。利用MapForce消除了Web服務(wù)開發(fā)的復(fù)雜性,無需編寫代碼就可以快速的構(gòu)建Web服務(wù)。
關(guān)鍵詞: Web服務(wù);MapForce;WSDL
中圖分類號:TP311文獻(xiàn)標(biāo)識碼:B 文章編號:1009-3044(2009)24-7030-03
The Applied Research of Using MapForce to Create Web Services
YU Liao-hong
(Yichun University,Yichun 336000,China)
Abstract: Described Web services architecture, core technologies, as well as a brief introduction MapForce, and examples of how to use MapForce to create Web services. Using MapForce to create Web services without writing code ,makes it easier to build web services.
Key words: Web services; MapForce; WSDL
目前,大多數(shù)企業(yè)在數(shù)據(jù)存儲和交換時(shí)所采取的格式并不相同,這給信息交換帶來很多麻煩。Web服務(wù)的應(yīng)用,能夠幫助企業(yè)將不同格式的數(shù)據(jù)相統(tǒng)一,從而發(fā)揮無縫信息交換的競爭優(yōu)勢和成本優(yōu)勢。
創(chuàng)建Web服務(wù)的方法有很多,有在J2EE平臺下開發(fā),有在.NET環(huán)境下開發(fā),這些都需要以編程的方式來完成。而利用MapForce可以無需編寫代碼完成Web服務(wù)創(chuàng)建。
1 Web服務(wù)概述
W3C給出Web服務(wù)(Web Service)的定義是:Web服務(wù)是支持網(wǎng)絡(luò)上不同機(jī)器與機(jī)器共同操作的軟件系統(tǒng),它所提供的接口能用機(jī)器所識別的和處理的格式語言(WSDL)所描述。
近年來Web服務(wù)技術(shù)得到快速發(fā)展和應(yīng)用,Web服務(wù)是基于網(wǎng)絡(luò)的、分布式的、自描述的、模塊化的組件,它執(zhí)行特定的任務(wù),遵循一定的技術(shù)規(guī)范,提供了面向Internet應(yīng)用的統(tǒng)一服務(wù)注冊、發(fā)現(xiàn)、綁定和集成機(jī)制,成為廣域環(huán)境下實(shí)現(xiàn)互操作的一種主要機(jī)制。
1.1 Web服務(wù)體系結(jié)構(gòu)
一個(gè)典型的Web服務(wù)體系結(jié)構(gòu)描述了三種角色之間的交互,即服務(wù)提供者(service provider)、服務(wù)請求者(service requestor)和服務(wù)注冊中心(service registry),以及交互過程中涉及到的三個(gè)操作,即發(fā)布(publish)、查找(find)和綁定(bind)。體系結(jié)構(gòu)如圖1所示。
1.1.1Web服務(wù)體系結(jié)構(gòu)中三種角色
1)服務(wù)提供者。它開發(fā)具體的服務(wù),并將服務(wù)發(fā)布到服務(wù)注冊中心,以便服務(wù)請求者發(fā)現(xiàn)和訪問該服務(wù)。同時(shí),接收和執(zhí)行來自服務(wù)請求者的請求。
2)服務(wù)請求者。它通過服務(wù)注冊中心,查找服務(wù)提供者所提供的服務(wù)描述,并調(diào)用具體服務(wù),獲得服務(wù)提供者的返回?cái)?shù)據(jù)作為調(diào)用結(jié)果。
3)服務(wù)注冊中心。服務(wù)提供者在此發(fā)布服務(wù)描述,服務(wù)請求者在此查找服務(wù)并獲取服務(wù)的綁定信息。
1.1.2Web服務(wù)體系結(jié)構(gòu)中的三種操作
對于利用Web服務(wù)的應(yīng)用程序,三個(gè)角色之間必須發(fā)生以下三個(gè)行為:發(fā)布服務(wù)描述、查詢或查找服務(wù)描述以及根據(jù)服務(wù)描述綁定或調(diào)用服務(wù)。
1)發(fā)布。為了使服務(wù)可訪問,真正發(fā)揮其作用,需要發(fā)布服務(wù)描述以便服務(wù)請求者發(fā)現(xiàn)和調(diào)用它。
2)查找。服務(wù)請求者在服務(wù)注冊中心查找滿足其需求的服務(wù)。
3)綁定。服務(wù)請求者使用服務(wù)描述中的綁定信息(包括服務(wù)的訪問路徑、服務(wù)調(diào)用的參數(shù)、傳輸協(xié)議等)來調(diào)用服務(wù)。
1.2 Web服務(wù)核心技術(shù)
構(gòu)建Web服務(wù)的三大技術(shù)基礎(chǔ)是:Web服務(wù)描述語言WSDL(WebService Descriptio Language);統(tǒng)一描述、發(fā)現(xiàn)和集成協(xié)議UDDI(Universal Description,Discovery and Integration);簡單對象訪問協(xié)議SOAP(Simple Object Acces)。這三種技術(shù)是構(gòu)成Web服務(wù)的核心技術(shù)。
WSDL是描述Web服務(wù)編程接口的語言;UDDI為Web服務(wù)提供注冊表以注冊它們的特性,方便其它應(yīng)用程序查詢;SOAP為Web服務(wù)和客戶應(yīng)用程序提供了一種簡單而便捷的通信手段。
WSDL是用來描述網(wǎng)絡(luò)服務(wù)或終端的一種XML語言,它用于定義Web服務(wù)以及如何調(diào)用它們。WSDL文檔可用于動態(tài)發(fā)布Web服務(wù)、查找已發(fā)布的Web服務(wù)以及綁定Web服務(wù)。
WSDL文件中的描述信息包括:數(shù)據(jù)類型定義、服務(wù)所支持的操作、輸入/輸出信息格式、網(wǎng)絡(luò)地址以及協(xié)議綁定等。具體地講,包括兩個(gè)組,即頂級組(Top Group)和底級組(Bottom Group);五個(gè)部分(Section),即類型(Types)、消息(Messages)、端口類型(PortTypes)、綁定(Bindings)和服務(wù)(Services)。其中頂級組由抽象定義(Abstract Definitions)組成,包括類型、消息和端口類型三個(gè)部分;底級組由具體描述(Concrete Descriptions)組成包括綁定和服務(wù)兩個(gè)部分。
2 MapForce簡介
Altova MapForce是一個(gè)杰出的數(shù)據(jù)映射和Web服務(wù)執(zhí)行工具,能夠?qū)⑷我饨M合的XML文件、數(shù)據(jù)庫文件、文本文件和EDI文件相集成,能通過WSDL操作之間的互相映射來構(gòu)建Web服務(wù)。
如圖2所示的MapForce2009應(yīng)用窗口,設(shè)計(jì)界面由4個(gè)主要的區(qū)域組成。
1)左邊的Library窗口和Project窗口:其中Library窗口顯示了MapForce中所有的函數(shù)庫;Project窗口顯示目前正在制作的Project和該P(yáng)roject中的所有Mapping文件。
2)右邊的Mapping窗口:以圖形化的方式顯示工作中的Mapping文件。
3)Overview窗口:通過一個(gè)紅色的矩形框來定位顯示映射區(qū)域。
4)Message窗口:顯示在映射過程中可能產(chǎn)生的所有有效的錯(cuò)誤和警告信息。
3 利用MapForce創(chuàng)建Web服務(wù)實(shí)例
MapForce提供了一種直觀的可視化方法,允許用戶可視化創(chuàng)建Web服務(wù),然后自動生成Java或C#代碼,以便在服務(wù)器上執(zhí)行Web服務(wù)。MapForce通過由XMLSpy建立的WSDL文件來創(chuàng)建Web服務(wù)。
3.1創(chuàng)建Web服務(wù)的原理
MapForce創(chuàng)建Web服務(wù)利用WSDL文件來中的類型(Type)、消息(Message)和操作(Opertion)這三個(gè)重要部分。
1)類型:
2)消息:
3)操作:操作是由消息構(gòu)成的,每一個(gè)操作可以包含一個(gè)Input消息、任意個(gè)Output消息和任意個(gè)Fault消息,在MapForce中每一個(gè)操作就是一個(gè)單獨(dú)的映射文件。MapForce的主要工作就是在每一個(gè)opertion中的Input消息、Output消息和Fault消息之間建立映射,從而完成Web服務(wù)的創(chuàng)建。
3.2創(chuàng)建Web服務(wù)實(shí)例
將一個(gè)描述Web服務(wù)的WSDL文件自動生成C#代碼的Web服務(wù)。具體流程圖如圖3。
實(shí)例中query.wsdl的主要部分如下:
數(shù)據(jù)庫people.mdb中Person表(圖4)。 1)創(chuàng)建Web服務(wù)項(xiàng)目。 選擇主菜單上的File→New命令,在彈出的對話框中選擇“WebService Project”項(xiàng),然后點(diǎn)擊OK按鈕;在Insert Web Service對話框中選擇query.wsdl文件,同時(shí)選擇生成的語言為C#,然后點(diǎn)擊OK按鈕,保存文件名為Query Person database。如圖5所示。 2)利用MapForce創(chuàng)建Web Server映射。 query.wsdl中定義的兩個(gè)操作getPerson和putPerson,經(jīng)過創(chuàng)建后變成兩個(gè)映射文件,但是沒有和數(shù)據(jù)之間建立映射。使用MapForce可以較方便的建立它們之間的映射。 在MapForce的Project Pane中分別雙擊getPerson.mfd,可以看見源Component和目標(biāo)Component(如圖6)。 單擊Insert菜單,分別插入Database(本例為people.mdb)、Constant、Filter;用鼠標(biāo)拖動把Libraries中的concat、contains函數(shù)放置到當(dāng)前窗口中,如圖7所示。 把所有源Component和目標(biāo)Component之間的映射建立起來,如圖8。 采取同樣的方法完成putPerson.mfd,結(jié)果如圖9。 3)產(chǎn)生目標(biāo)代碼并編譯運(yùn)行web服務(wù)。 選擇主菜單上的File→Generate code in命令,選擇目標(biāo)語言C#,生成C#代碼。在Visual Stdio.Net 2003或2005中打開,對其進(jìn)行編譯運(yùn)行。 4 結(jié)束語 MapForce能夠可視化設(shè)計(jì)實(shí)例,無需編寫代碼,就可以創(chuàng)建Web服務(wù),消除了Web服務(wù)開發(fā)的復(fù)雜性,可以快速的構(gòu)建Web服務(wù)。 參考文獻(xiàn): [1] 吳潔.XML應(yīng)用教程[M].2版. 北京:清華大學(xué)出版社,2007. [2] 李景霞,侯紫峰.Web服務(wù)組合綜述[J].計(jì)算機(jī)應(yīng)用研究, 2005,22(12):4-7. [3] 楊艷,唐勝群,張文濤.XML Web服務(wù)技術(shù)探討[J].計(jì)算機(jī)應(yīng)用研究, 2002(10):97-98. [4] 張 楠,李元誠.Web服務(wù)技術(shù)的研究[J].中國電力教育, 2007(S1):83-85.