Web服務允許您以標准格式提供現有的或新增的功能並且允許用戶和應用程序從任何位置訪問它們
PowerDesigner 同時針對Microsoft NET和Java引入了完善的Web服務設計和生成機制使用PowerDesigner 您可以專注於Web服務的設計而將所有必需的生成實現構造的任務交給PowerDesigner完成
一Web服務概述
Web服務是一種接口它描述了在網絡上可通過SOAP消息進行訪問的操作集合
Web 服務的接口和部署位置(可選)由WSDL說明WSDL是一種聲明數據類型消息端口類型和端口(可選)的XML文檔通過WSDL用戶可以知道應該發送哪種格式的SOAP消息來調用Web服務以及返回消息的格式為何
為了能使用戶查找到所需的Web服務服務提供者可能會在UDDI注冊服務中發布WSDL文檔這樣用戶就可以使用UDDI注冊服務來搜索Web服務
若要調用Web服務用戶可以向部署Web服務時所在的訪問點URL發送SOAP消息或者使用可簡化此調用過程的代理類SOAP消息也是XML文檔
二PowerDesigner的Web服務功能
PowerDesigner 允許您新建Web服務組件通過對WSDL進行反向工程來創建Web服務組件浏覽UDDI 搜索WSDL從Web服務組件的定義生成WSDL生成NET(C#和VB NET)的服務器端代碼生成NET的客戶端代理生成Java(JAXRPC和JAXM)的服務器端代碼以及生成Java的客戶端代理
為了設計Web服務組件PowerDesigner使用了UML類圖組件圖和部署圖Web服務由組件圖的組件表示而已部署的Web服務則由部署圖的組件實例來表示
三創建Web服務組件
創建Web服務組件有五個步驟
首先是要創建面向對象模型(OOM)您可以選用以下語言中的任一種C#Visual Basic NET或Java在此模型上會自動附加用於WSDL的擴展模型定義(XEM)XEM定義了WSDL的生成模板和擴展屬性
第二步是創建類最好是先創建一個程序組(Package)然後再在此程序組下創建類
第三步是使用Web服務向導將創建的類轉換成Web服務組件為此您可以右鍵單擊該類然後選擇創建Web服務組件命令或在選中該類後選擇工具>創建Web服務組件命令圖顯示了一個Web服務向導的示例Web服務類型可以是接口或實現如果選擇接口則表明您只希望定義此Web組件並生成相應的WSDL對於NET此組件類型為標准其Web服務將通過asmx文件來實現對於Java此組件類型可能是標准服務程序或無狀態會話 Bean這幾種Java組件類型的實現方法分別是標准類型使用JAXRPC服務程序類型使用JAXM而無狀態會話 Bean類型將使用JEE(JSR)Web服務規范當向導結束時會創建一個組件和類圖顯示了組件圖中的組件符號示例
圖 Web 服務向導
圖 組件符號
第四步是添加Web方法您需要新建一個操作(Operation)打開該操作的屬性頁單擊Web 方法復選框定義參數和返回類型以及編寫該操作的實現代碼圖顯示了Web方法GetStockQuote的實現示例
圖 Web方法GetStockQuote的實現示例
最後一步是對WSDL生成進行自定義可以自定義參數和返回值的WSDL數據類型操作的擴展屬性以及組件的屬性和擴展屬性若要檢驗生成的WSDL您可以打開組件屬性頁的WSDL選項卡生成WSDL的任務可以交給PowerDesigner完成也可以由您自行定義(用戶定義)如果Web服務組件來源於對WSDL的反向工程原始的WSDL將得到保留圖顯示了一個生成的WSDL的示例
圖 生成的WSDL的示例
您可以在類屬性頁的預覽選項卡中預覽生成的實現代碼 您可以使用部署圖節點和組件實例來仿建已經部署的Web服務組件此外還可以在節點中定義服務器的URL以及在組件實例中定義服務的URL
四對WSDL進行反向工程
WSDL可以僅定義Web服務接口也可以同時定義接口和訪問點的URLWeb服務接口可能被多個服務提供者用來提供相同的服務當然這些服務會具有不同的實現和訪問點如果擁有WSDL文檔的文件路徑或URL您就可以通過對它進行反向工程來創建Web服務組件之後可以定義自己的實現方法或將創建的Web服務組件保存在庫中供以後再次使用您在查找感興趣的WSDL時可以使用UDDI浏覽器在UDDI注冊服務中進行搜索
為了對WSDL進行反向工程需要用C#VB NET或Java中的任意一種語言創建OOM然後選擇語言>導入 WSDL命令並輸入WSDL文件的路徑或URL進行反向工程之後會在組件圖中創建一個組件同時在類圖中創建一個類所創建的類將僅包含該Web服務的操作信號若想實現該Web服務還需要定義這些操作的實現代碼
在UDDI注冊服務中搜索WSDL 如果希望搜索在UDDI注冊服務中注冊的WSDL請打開導入WSDL窗口然後單擊浏覽UDDI按鈕通過浏覽 UDDI窗口(見圖 )您可以選擇UDDI運營商搜索條件和搜索類型並可以按實體名稱服務名稱或WSDL名稱進行搜索此外您還可以預覽找到的WSDL
圖 浏覽UDDI窗口
五生成NET類型的Web服務
對於NET服務器端代碼PowerDesigner會生成一個asmx文件這種Web服務的實現類可以在上述的asmx文件中生成也可以在外部生成此實現類所使用的語言可以是C#或者VB NET在類屬性頁的預覽選項卡中可以預覽asmx文件和相應的實現類代碼圖 顯示了C#語言的asmx文件示例
圖 C#語言的asmx文件示例
PowerDesigner還可以生成客戶端代理類來簡化Web服務的調用為生成客戶端代理類PowerDesigner使用了Visual Studio NET附帶的wsdlexe程序
若要生成WSDL服務器端代碼和/或客戶端代理請選擇語言>生成C#代碼或語言>生成VB NET代碼命令如果要生成客戶端代理可以在任務選項卡中選擇生成Web服務客戶端代理選項圖顯示了可用的生成任務如果這個類不是在asmx文件內部生成的您將可以對這些C#代碼或VB NET代碼進行編譯不過在編譯C#或VB NET文件時您必須定義CSC或VBC變量來指示cscexe或vbcexe命令的位置
在部署Web服務時只需要將IIS目錄下的asmx文件和相應的類文件進行復制C:\Inetpub\wwwroot\<程序組名>其中<程序組名> 是程序組的名稱要測試此Web服務可以在浏覽器中輸入以下URL http://<主機名>/<程序組名>/<服務名>asmx
圖 Web服務的生成任務
六生成Java類型的Web服務
如果Web服務的實現類型為標准PowerDesigner將使用JAXRP 來實現如果實現類型為服務程序PowerDesigner將使用JAXM來實現如果實現類型為無狀態會話Bean則PowerDesigner將使用JEE(JSR)Web服務規范來實現JSR尚未正式頒布
JAXRPC定義了RPC類型的Web服務調用雖然它易於開發和使用但為了避免復雜的對象/XML映射它只能局限於簡單的消息格式而基於JAXM的Web服務組件顯然更具優越性它允許您靈活地處理復雜的消息結構
若要使用JAXRPC或JAXM您需要安裝Java Web Services Developer Pack(JWSDP)此程序包可從Sun公司的網站下載在部署JAXRPC或JAXM類型的Web服務組件時需要有支持JAXRPC或JAXM的服務器支持JAXRPC或JAXM的Apache Tomcat附帶提供了JWSDP
至於基於JAXRPC的Web服務組件您只需實現其Web方法的代碼若要生成WSDL服務器端代碼和/或客戶端代理可選擇語言>生成Java代碼然後選擇使用XRPCC工具生成WSDL(服務器端)和/或使用XRPCC工具生成Web服務的代理代碼命令(見圖)XRPCC命令是JWSDP的一個工具它可以生成JAXRPC類型的服務器端代碼或客戶端代理在部署生成的Web服務時需要創建一個包含所有生成文件的WAR文件並將此WAR文件部署在支持JAXRPC的服務器上比如說Apache Tomcat
圖 JAXRPC生成任務
對基於JAXM的Web服務組件而言您需要實現其onMessage操作onMessage操作將按照在WSDL中的指示接收並處理輸入的SOAP消息並構建返回消息以及將此消息返回要生成WSDL和JAXM類型的Web服務請選擇語言>生成Java代碼命令然後選擇構建Web組件創建Web應用程序WAR命令(見圖)該命令會對JAXM服務程序代碼進行編譯並創建WAR文件要部署此JAXM服務程序您可以將上述WAR文件部署在支持JAXM的服務器上比如說Apache Tomcat
圖 JAXM生成任務
至於基於無狀態會話Bean的Web服務組件由於JSR規范尚未正式頒布因此目前還不能使用
七下一步要增強的功能
JEE(JSR)Web服務規范不久將面世供人們使用通過它您可以將無狀態會話Bean用作Web服務實現的利器它可以讓現有功能以Web服務的新面目出現同時也可以新建Web服務PowerDesigner 附帶提供了基於早期JSR規范的版本該版本尚待進一步的認證等該規范正式頒布後我們將提供維護版本以實現對它的完全支持
PowerDesigner的新版本還將支持Web服務的綜合標准
八結論
PowerDesigner 簡化了Web服務的設計和生成過程只要懂得如何創建類和方法就能知道如何創建Web服務!您可以使用PowerDesigner設計創建Web服務以及對它進行反向工程和為其創建文檔如果希望重復使用這些Web組件您可以創建一個Web服務組件庫並使用版本庫(Repository)來管理不同版本的Web組件
From:http://tw.wingwit.com/Article/program/SQL/201311/16374.html