, ,
(北京航空航天大學 機械工程及自動化學院,北京 100191)
隨著計算機技術和網絡技術的高速發(fā)展,航空裝備保障企業(yè)為提高企業(yè)事務處理效率,大力推進企業(yè)信息化。航空裝備保障企業(yè)的各個部門根據自身的情況與需要分別建立了信息和業(yè)務系統(tǒng),如飛機保障資源管理系統(tǒng)、敏捷平臺和飛機外場服務綜合信息系統(tǒng)等。這些業(yè)務系統(tǒng)往往采用不同的技術標準與框架、數據結構、軟硬件平臺、交互模式和軟件開發(fā)商,其中部分系統(tǒng)已經部署多時,這些跨平臺、跨部門的異構系統(tǒng)造成了信息壁壘[1-2]。為在充分利用現有部門信息系統(tǒng)的基礎上,進一步推進飛機綜合保障部門信息化水平,迫切地需要研究如何對這些分散、孤立的部門信息系統(tǒng)的業(yè)務和數據進行集成。
行業(yè)中解決異構系統(tǒng)集成問題的主流方法是企業(yè)應用集成(Enterprise Application Integration,EAI),其經過多年的探索和發(fā)展,具體方法有很多種,現今在IT界內應用較為廣泛的是面向服務的架構(Service-Oriented Architecture,SOA)[3-4],在本文中便是以“服務”為中心,把飛機保障資源管理系統(tǒng)、敏捷平臺和飛機外場服務綜合信息系統(tǒng)提供的功能發(fā)布為“服務”,并將飛機保障信息系統(tǒng)構建成為這些服務的集合,提供一個靈活、低成本、松耦合與可擴展的基礎服務集成平臺,實現飛機保障信息的數據集成和應用集成。盡管基于SOA的開發(fā)方法不是最新概念,但一方面它經過多年的發(fā)展已經很成熟,較為穩(wěn)定,能夠很好地適應航空領域的信息化特點[5];另一方面它采用SOA來開發(fā)和部署“服務”,能夠充分利用現有的信息系統(tǒng),降低新系統(tǒng)的開發(fā)成本,從而打破信息壁壘,進一步推進航空企業(yè)信息化的發(fā)展[6]。
Web Service技術不僅是SOA模式的主要實現技術,而且是建立在獨立平臺的協(xié)議和開放標準基礎上的企業(yè)應用集成技術,它對操作系統(tǒng)、開發(fā)框架、服務器與數據庫等沒有任何限制,可動態(tài)查詢、發(fā)現并調用所需的服務[7-8]。航空領域因其特殊性,具有封閉性,與互聯(lián)網領域相比技術更新速度較慢,因此,需要相對成熟的技術。
為此,本文從異構系統(tǒng)集成的角度出發(fā),通過分析飛機保障信息系統(tǒng)集成需求和特征,基于SOA和Web Service開發(fā)技術建立異構系統(tǒng)集成模型,設計集成體系架構的3個模塊(服務網提供者、服務注冊代理與服務請求者),并按服務描述、服務實現、服務數據封裝、服務發(fā)布、服務綁定與服務調用的順序介紹系統(tǒng)集成的具體實現過程。
飛機保障信息系統(tǒng)是面向某飛機設計研究所綜合保障部門的企業(yè)信息化系統(tǒng),它通過軟件平臺實現飛機保障各項工作技術狀態(tài)管理,支持各項飛機保障工作技術狀態(tài)信息的共享與分發(fā),可以與所內外其他主要數字化平臺實現互通互聯(lián)。從事務角度看,飛機保障信息系統(tǒng)集成是將各科室的業(yè)務系統(tǒng)集成到一個統(tǒng)一的信息系統(tǒng)中,實現各科室業(yè)務和數據共享,對飛機綜合保障部門進行全面的閉環(huán)管理;從技術角度看,它是在不做出過多修改的情況下將不同已有的應用程序和業(yè)務數據集成到一起的過程,從而最終實現業(yè)務流程的集成和數據共享。系統(tǒng)集成需求如圖1所示。
圖1 飛機保障信息系統(tǒng)集成需求
本文根據對某飛機設計研究所綜合保障部門需求的調研結果,總結了以下飛機保障信息系統(tǒng)集成存在的難點:
1)跨框架與跨平臺:所需要集成的系統(tǒng)往往是采用不同的框架和技術,由不同的軟件開發(fā)商開發(fā),因此,如何將這些異構平臺集成到本系統(tǒng)中是一大難點。
2)高效性與低成本:如何使被集成的系統(tǒng)盡量少被修改,尤其是針對正在運行的系統(tǒng),應盡量保證其功能完整性,并降低系統(tǒng)集成成本。
3)可擴展性與靈活性:如何保證未來開發(fā)的系統(tǒng)能較為簡單地集成到本系統(tǒng)中,并使被集成的系統(tǒng)與本系統(tǒng)易于修改。
飛機保障信息系統(tǒng)集成利用SOA組件模型,將飛機保障資源管理系統(tǒng)、敏捷平臺和飛機外場服務綜合信息系統(tǒng)中所需集成的功能模塊發(fā)布成“服務”,然后采用服務之間定義的接口和契約來實現系統(tǒng)集成。接口一般采用開放標準和協(xié)議,利用中立的方式進行定義,因此,它獨立于實現服務的硬件平臺、操作系統(tǒng)與編程語言[9]。飛機保障信息系統(tǒng)集成采用SOA模型,便于充分利用現有資源,降低整合和管理的復雜性,提高靈活性和重用性。本文在采用SOA框架的同時,以Web Service作為實現飛機保障信息系統(tǒng)中“服務”的最主要手段,其本質是通過傳輸固定格式的XML來解決跨平臺調用問題[10]。以飛機試飛管理系統(tǒng)的試飛大綱管理功能為例,本文利用Web Service技術調用飛機試飛管理系統(tǒng)發(fā)布的試飛大綱管理“服務”,其原理如圖2所示。
圖2 Web Service調用原理
根據Web Service調用原理,本文建立基于SOA和Web Service設計的系統(tǒng)集成模型,如圖3所示。此模型基于J2EE架構與Web服務器,可以解決飛機保障信息系統(tǒng)集成存在的高效性與低成本、可擴展性與靈活性等難點。模型總體分為服務提供者、服務注冊代理與服務請求者3個部分。
1)服務提供者是根據集成業(yè)務需求,把飛機保障資源管理系統(tǒng)、飛機試飛管理系統(tǒng)、飛機外場服務綜合信息系統(tǒng)與敏捷平臺等所內外系統(tǒng)所提供的“服務”用XSD文件進行定義,并生成Web Service描述語言(Web Service Description Language,WSDL)文件,然后采用基于Spring-WS的contract-first模式編寫Web服務,最后把服務生成的WSDL文件發(fā)布到統(tǒng)一描述、發(fā)現和集成(Universal Desotiption,Discovery and Intergation,UDDI)注冊中心。
2)服務注冊代理是一個可被搜索的服務描述注冊中心,服務提供者可以在此發(fā)布它們的服務描述文件,服務注冊代理對其進行分類,并提供搜索服務。
3)服務請求者是狹義范圍的飛機保障信息系統(tǒng),首先它在“服務注冊代理”中查找所需“服務”,然后根據查找結果,與服務提供者實現綁定,最后通過簡單對象訪問協(xié)議(Simple Object Access Protocol,SOAP)協(xié)議發(fā)送或接收可擴展標記語言(eXtensible Markup Language,XML)消息實現“服務”調用。
圖3 飛機保障信息系統(tǒng)集成模型
本文在構建模型和使用Web Service的過程中主要采用了4種標準和技術:XML,SOAP,WSDL,UDDI[11],它們都是開放標準和協(xié)議,可解決飛機保障信息系統(tǒng)集成存在的“跨框架與跨平臺”難點。
1)XML是Web服務中的數據傳輸基本格式[12-13],它使用Unicode編碼,采用自描述的數據結構,能夠以簡單的文本文檔格式儲存、傳輸、讀取數據。本文通過XML傳輸集成數據。
2)SOAP是用來交換信息的一種協(xié)議[14],它是分布式系統(tǒng)之間交換信息的輕量級方法,同時也是基于XML和HTTP的一種協(xié)議。本文利用SOAP進行消息傳遞。
3)WSDL是由IBM和微軟于2000年提出的一種用以描述Web Service的功能特征的語言[15]。本文利用WSDL描述服務語義和接口等信息。
4)UDDI本質上是一種目錄服務,是一種基于Web的分布式Web服務信息注冊中心的實現規(guī)范。本文利用UDDI對服務進行注冊和檢索。
本文從“服務提供者”“服務注冊代理”“服務請求者”3個方面介紹飛機保障信息系統(tǒng)集成功能實現。以集成飛機保障資源管理系統(tǒng)的過程為例,詳細敘述如何利用“發(fā)布服務”的思想實現異構系統(tǒng)集成。其中飛機保障資源管理系統(tǒng)是由天健志行軟件公司利用bootstrap3等框架開發(fā)的,采用oracle數據庫,與本文系統(tǒng)采用的框架、數據庫等完全不同。
“服務提供者”功能實現是基于Web Service將飛機保障資源管理系統(tǒng)、敏捷平臺等系統(tǒng)向飛機保障信息系統(tǒng)提供服務,包括服務描述、服務實現與服務數據封裝。
2.1.1 服務描述
服務描述是對飛機保障資源管理系統(tǒng)、敏捷平臺和飛機外場服務綜合信息系統(tǒng)等信息系統(tǒng)所提供服務的接口和實現細節(jié)的描述,主要包括數據結構、綁定信息、操作、分類、網絡位置和其他的元數據信息,其中分類和其他的元數據用來實現飛機保障信息系統(tǒng)的服務檢索和服務調用。本文利用WSDL實現服務描述。WSDL是基于XML語法描述服務,具有協(xié)議規(guī)范、普遍性、易讀性等特點,圖 4是WSDL規(guī)范結構圖。但由于WSDL語法較為復雜,手工編寫難度很大,因此本文采用先編寫XML Schema定義,后將其動態(tài)轉換為WSDL的方法來實現服務描述。
圖4 WSDL規(guī)范結構圖
XML Schema定義(XML Schema Definition,XSD)也稱XML Schema語言,用于定義可出現于XML文檔中的元素和屬性、其子元素的次序和數目、定義元素的數據類型和默認值等。它類似于DTD,定義了XML文檔的合法構建模塊。
本文以集成飛機保障資源管理系統(tǒng)為例介紹“服務描述”過程。首先利用XSD詳細定義了飛機保障資源管理系統(tǒng)等信息系統(tǒng)提供的服務所傳輸XML的名稱、命名空間、子元素、數據類型、數據默認值以及固定值等信息;然后在配置文件中對XSD進行配置,如在飛機保障資源管理系統(tǒng)中WEB-INF/dorado-home/datasources.xml文件進行配置,在此文件當中添加配置信息,包括XSD的地址、命名空間與WSDL的ID和地址等信息,在配置XSD后,啟動服務,請求如下地址:https://servername:
2.1.2 服務實現
服務實現是根據服務描述(即XSD與WSDL文件)和飛機保障信息系統(tǒng)集成需求編寫服務程序。因為Spring Web Services是contract-first模式即契約優(yōu)先模式,它要求先確定服務描述再進行代碼開發(fā),從而可以實現服務描述和實現之間的松散耦合,并確保Web服務的語言無關性,所以本文采用Spring-WS框架實現服務。本文中“服務實現”需要定義2個Java程序,一個是對服務傳輸數據對象化的處理數據訪問的類,另一個是處理業(yè)務邏輯的類。
處理數據訪問的類本質上是JavaBean與POJO,本系統(tǒng)在此采用了Object/XML映射技術,實現了Java對象與XML的相互轉換。因為JAXB(Java Architecture for XML Binding)是一個業(yè)界的標準,所以本文采用JAXB2,實現將服務傳輸的XML文檔反向生成Java對象樹。為了實現Object/XML轉換,需要在處理數據訪問的類名前添加annotation注解,在annotation注解中標明服務所采用的namespace、xmlRoot與相關屬性,而這些屬性都需要在“服務描述”中聲明,例如在飛機保障資源管理系統(tǒng)中“服務實現”處理數據訪問的類結構如下所示:
@XmlRootElement(name=“SupportRequest”,namespace=“http://www.bstek.com/ws”)//annotation,規(guī)定命名空間
@XmlAccessorType(XmlAccessType.FIELD)
//annotation注解
public class SupportRequest {}
注釋@XmlRootElement()、@XmlAccessorType()由JAXB2提供,XmlRootElement是用于定義SupportRequest類在序列化成XML之后的XmlRoot及namespace值,這兩個值來自于XSD文件;Xml AccessorType用于定義這個類中屬性在序列化成xml之后子節(jié)點名及通過什么樣方式訪問這些屬性值,這里定義成XmlAccessType.FIELD,表示直接采用屬性名方式。
處理業(yè)務邏輯的類是用于接受飛機保障信息系統(tǒng)請求的類,類中處理具體業(yè)務邏輯的方法以飛機保障信息系統(tǒng)的輸入信息對象為入參,并且返回一個服務輸出信息對象,例如在飛機保障資源管理系統(tǒng)中“服務實現”處理業(yè)務邏輯的類結構如下所示:
@Endpoint
public class SupportResourceEndpoint{
@Resource
private TechnicaldocDao technicaldocDao;
@PayloadRoot(localPart="SupportResourceRequest",namespace="http://www.bstek.com/ws")//annotation,規(guī)定//命名空間
public @ResponsePayload SupportResponse getSup(@Request Payload SupporRequest request) throws Exception{
…//處理業(yè)務邏輯
return response;//返回調用結果
}
這個類采用了3類annotation,具體如下:
1)@Endpoint標明本文將這個類發(fā)布成一個Endpoint服務類,它是Spring-WS的特殊注解,表明這個類是Web Service的服務端點。而@Resource注解被用來激活一個命名資源(TechnicaldocDao)的依賴注入,擁有與@Resource注解所提供“TechnicaldocDao”相匹配的Spring管理對象會被注入。
2)具體處理業(yè)務邏輯的getSup()方法上面的注解@PayloadRoot用于標明此方法可以接收的XML信息,這里需要定義的是XML的namespace,同時XML的ROOT為SupportRequest的信息。
3)@ResponsePayload表示getSup()方法的返回值將作為響應的負載返回到Web Service調用客戶端。該方法中參數前的注釋@RequestPayload表示SupportRequest值需要從“飛機保障信息系統(tǒng)”請求的SOAP消息的Body中解析出來,解析后的Body部分的XML要反序列化成為需要的SupportRequest對象并作為參數,這里也采用了JAXB將負載的XML消息直接轉換成服務輸出信息的Java對象。
編寫相關Javabean與Endpoint后,在飛機保障資源管理系統(tǒng)的配置文件中對2類服務實現類進行配置,至此,一個完整的基于Spring-WS的Web Service的服務實現編寫與部署即全部完成。
2.1.3 服務數據封裝
服務數據封裝是把服務業(yè)務數據映射于某個封裝協(xié)議的凈荷中,并填充對應協(xié)議的包頭,然后形成封裝協(xié)議的服務數據包,最終完成速率適配。而SOAP是基于XML和HTTP的簡單、輕量級、擴展性很好的消息傳輸協(xié)議,它獨立于語言、平臺與底層傳輸機制,非常適合應用于分散的環(huán)境中,以點對點的方式進行交換結構化和類型化信息。因此,本文采用SOAP協(xié)議進行服務數據封裝。
本文中的服務數據封裝以“SOAP消息”為通信的基本單位,一條SOAP消息便是一個普通的XML文檔,SOAP Envelope是SOAP消息結構的主要容器,而SOAP Envelope里面包含一個可選的SOAP Header和一個必須的SOAP Body。本文利用Java提供的Java XML Pack實現SOAP協(xié)議,來創(chuàng)建、使用、發(fā)送和接收XML消息,具體信息可查看JAXP的API。
服務注冊代理是UDDI注冊中心,它是用來描述、發(fā)現并集成Web服務的一系列技術規(guī)范[16],本文借助UDDI實現Web服務的發(fā)布與搜索,從而大幅降低了飛機保障信息系統(tǒng)發(fā)布和尋找服務的成本,提高了企業(yè)運營效率。UDDI注冊中心分為公共UDDI注冊中心和私有UDDI注冊中心,由于本文的研究背景是面向飛機保障信息領域,因此采用私有UDDI注冊中心。其中UDDI注冊中心存儲的信息以XML形式表示。
發(fā)布服務是將“服務描述”即WSDL文件映射到UDDI,WSDL中的服務接口是服務可重用的抽象定義,而且要在UDDI注冊中心作為
“服務請求者”是飛機保障信息系統(tǒng)調用飛機保障資源管理系統(tǒng)、敏捷平臺和飛機外場服務綜合信息系統(tǒng)等所提供的服務的過程,包括服務綁定與服務調用。
2.3.1 服務綁定
當飛機保障信息系統(tǒng)通過查詢服務注冊代理,得到所需服務的“服務描述”文件即WSDL文件后,通過WSDL定義的Web服務端點,將消息和操作信息綁定到某個具體的網絡協(xié)議與消息格式上。本文采用SOAP的綁定方式實現抽象消息交換模式與具體的傳輸協(xié)議和消息交換格式的綁定。
2.3.2 服務調用
服務調用是當實現服務綁定后,飛機保障信息系統(tǒng)調用飛機保障資源管理系統(tǒng)等系統(tǒng)提供的服務的過程。服務調用的實現需要根據 “服務提供者”生成的WSDL文件,編寫處理數據訪問與服務調用業(yè)務邏輯的類,其中處理數據訪問類與上文服務實現中的處理數據訪問類的結構類似,在此不再贅述。
服務調用業(yè)務邏輯的類主要實現對“服務提供者”提供的Web服務的調用。本文的服務請求者可調用那些不需要任何安全性驗證的Web服務,也可調用那些使用WS-Security進行認證的Web服務,同時也支持一些采用Http Basic進行認證的Web服務。飛機保障信息系統(tǒng)調用飛機保障資源管理系統(tǒng)的WebServiceInvoke類結構如下:
public class WebserviceInvokeTest {
public static void main(String[] args) throws Exception{
//設置要調用的目標Web Service的地址
Stringuri="http://localhost:8083/escmp/dorado/webservice/supportResourceWebService";
//初始化Webservice客戶端
WebServiceClientclient=new WebServiceClient(uri);
//設置要調用的Webservice的WS-Security認證所需要的//username及password,以及是否對用戶名及密碼進行加密傳輸
client.set Username Token("admin","81c1206f28f2738cdf 714b4e10428 c66f58eee10",true);
//設置要調用的Webservice的Http Basic認證所需要的//username及password,Http Basic認證當中所使用的密碼//為加密之前的密碼,而非被加密之后的密碼
client.setHttpAuthenticationCredentials("admin","admin");
//調用服務
SupportRequest request= new SupportRequest();
request.setSendStatus(0);
//設置在調用目標Webservice過程當中,需要將//Javabean與XML進行相互序列化的Javabean類的class
client.setMarshallerClasses(new Class[] {SurpportRequest.class,SurpportResponse.class});
//發(fā)送調用請求并返回調用結果
SupportResponse response=(SupportR esponse)client.sendAndReceive(request);
//判斷返回結果是否為空
if(response.getTechnicaldocuments()!=null){
//輸出返回結果
for(Technicaldocument technicaldocument:response.getTechnicaldocuments()){
System.out.println(" aircrafttype:" + technicaldocument.getAircrafttype());}
}
}
本文提出飛機保障信息集成方法,應用Dorado平臺和Spring-WS框架開發(fā)基于SOA和Web Service的飛機保障信息系統(tǒng)。該系統(tǒng)是為飛機綜合保障相關部門的用戶提供一個統(tǒng)一的保障信息管理平臺,主要以飛機綜合保障工作的業(yè)務管理為基礎,以試飛管理和外場管理為核心業(yè)務,通過SOAP封裝XML信息實現與飛機保障資源管理系統(tǒng)、飛機試飛管理系統(tǒng)、飛機外場服務綜合信息系統(tǒng)等異構系統(tǒng)的集成及數據共享。該系統(tǒng)在某飛機設計研究所的綜合保障工作過程中進行了初步應用,驗證了上述異構系統(tǒng)集成方法的有效性。同時對于一些需要集成到本系統(tǒng)中的異構系統(tǒng),也可按本文的方法,以“發(fā)布服務”的思想實現集成,使本文系統(tǒng)不斷完善。飛機保障信息系統(tǒng)的主界面如圖5所示。
圖5 系統(tǒng)驗證界面
本文系統(tǒng)于2016年5月份由航空系統(tǒng)某信息公司作為第三方企業(yè)進行了測試,測試總體結果如表1所示。首輪測試中出現問題如下:角色擁有不屬于自己權限,提示信息錯誤或不一致,輸入錯誤或無效的數據,輸入或輸出字段類型有誤,權限判別的業(yè)務流程設計不友好,飛機試飛管理系統(tǒng)集成數據沒有或錯誤驗證。產生這些問題的主要原因是需求定義不明確、功能性錯誤、頁面設計和需求不一致以及開發(fā)人員的疏忽。開發(fā)人員通過與需求方進行詳細溝通并提出完善措施,改進之后,在回歸測試中,上述問題均被解決,發(fā)現飛行統(tǒng)計過程中讀取的數據類型有誤等問題,這是由于修改集成業(yè)務邏輯而引入了新的錯誤。測試后開發(fā)人員采取了與飛機綜合保障部門業(yè)務人員加強溝通,修改與敏捷平臺集成的業(yè)務邏輯代碼,增加輸入與輸出限制判別與對集成數據進行控制等措施來改進本文系統(tǒng)。
表1 系統(tǒng)測試用例執(zhí)行情況
最終本文系統(tǒng)于2016年9月通過了項目組的驗收,并已正式上線運行,筆者也每隔一段時間去現場收集用戶的反饋意見,目前系統(tǒng)運行穩(wěn)定、可靠。
本文以航空企業(yè)信息化為背景,針對飛機綜合保障部門信息化集成需求,首先提出基于SOA和Web Services的異構系統(tǒng)集成方法,研究支撐SOA和Web Services技術的XML、SOAP、WSDL與UDDI等開發(fā)技術與標準;然后建立飛機保障信息系統(tǒng)集成模型,分析SOA和Web Service體系架構的3個模塊以及基本操作;最后通過飛機保障信息系統(tǒng)集成實例說明如何基于SOA與Web Services實現異構系統(tǒng)集成。目前SOA和Web Services技術已經成熟,但其在航空企業(yè)信息化領域的應用尚處于發(fā)展階段,需要對此做進一步研究,從而有效推進航空企業(yè)信息化水平,提高航空制造業(yè)整體效率。
[1] 王 穎,吳榮泉,黃美鋒,等.一個面向服務的EAI框架[J].計算機工程,2006,32(1):279-281.
[2] PAPAZOGLOU M P,HEUVEL W J.Service Oriented Architectures:Approaches,Technologies and Research Issues[J].The VLDB Journal,2007,16(3):389-415.
[3] 黃雙喜,范玉順,趙大哲,等.基于Web 服務的企業(yè)應用集成[J].計算機集成制造系統(tǒng),2003,9(10):864-867.
[4] JURIC M B,LOGANATHAN R,SARANG P,et al.SOA Approach to Integration[M].Birmingham,UK:Packt Publishing Ltd.,2007.
[5] KUZYK R.Web Services:Standardizing EAI[J].EAI Journal,2002(3):123-128.
[6] HE Wu,XU Lida.Integration of Distributed Enterprise Applications:A Survey[J].IEEE Transactions on Industrial Informatics,2014,10(1):35-42.
[7] KRAFZIG D,BANKE K,SLAMA D.Enterprice SOA Service-Oriented Architecture Best Practices[M].[S.l.]:Prentice Hall,2005.
[8] 王衛(wèi)玲.基于SOA的Web Services集成技術研究[D].南寧:廣西大學,2007.
[9] 高 潔,張相文.基于SOA的服務型電子政務模式研究[J].情報學報,2009(10):777-783.
[10] 張朝暉,徐立臻,董逸生,等.一種基于SOA的企業(yè)集成平臺[J].計算機工程,2011,37(5):258-260.
[11] 李安渝.Web Services技術與實現[M].北京:國防工業(yè)出版社,2003.
[12] 張文斌,葉紅云,陳恩紅.基于Web Service的B2B電子商務環(huán)境構建技術[J].計算機工程,2002,28(11):69-71.
[13] W3C Recommendation.Extensible Markup Language(XML) 1.0[EB/OL].(2000-10-06).http://www.w3.org/TR/REC-xml.
[14] 胡迎松,彭利文,池楚兵.基于.NET的Web應用三層結構設計技術[J].計算機工程,2003,29(8):173-175.
[15] 程 澄.基于Web Service的綜合物流服務平臺的研究與實現[D].大連:大連海事大學,2012.
[16] 劉家茂.Web Services動態(tài)合成及UDDI注冊/查詢技術的研究[D].上海:復旦大學,2005.