專利名稱:一種構(gòu)件的封裝和一致性訪問的方法
技術(shù)領(lǐng)域:
本發(fā)明屬于軟件工程技術(shù)領(lǐng)域,特別涉及對軟件構(gòu)件的通用性的改良。
背景技術(shù):
目前金融、教育、電子商務、電子政務、醫(yī)療衛(wèi)生等應用領(lǐng)域內(nèi),軟件系統(tǒng)作為具體技術(shù)方案的一種實施途徑,它連同計算機硬件、輸入輸出設備以及計算機網(wǎng)絡基礎設施一起,極大地促進了這些應用領(lǐng)域內(nèi)的業(yè)務流程集成,提高了自動化水平。在這些應用領(lǐng)域,軟件成為一種依附在計算機硬件之上的重要的技術(shù)方案組成部分,并對各應用領(lǐng)域?qū)崿F(xiàn)的功能起著重大的作用。
隨著人們需要軟件完成的任務越來越復雜,對功能的需求越來越強大,軟件開發(fā)的任務也相應的繁重起來。同時,人們也發(fā)現(xiàn),隨著軟件功能的增強,很多功能出現(xiàn)了重復開發(fā)的問題。因此就有人提出把軟件系統(tǒng)中的公用部分做成單獨的軟件構(gòu)件,可以在不同的軟件系統(tǒng)中反復使用,既降低了開發(fā)成本,又提高了系統(tǒng)的可靠性和安全性。這即是軟件復用技術(shù)。
同時,隨著Internet(因特網(wǎng))應用深度的拓展,Internet已從一個簡單的信息發(fā)布平臺演化為分布式計算平臺,人們不僅從網(wǎng)上取得信息,同時也在獲取各種網(wǎng)絡應用程序(服務)。這種面向終端用戶的應用程序個性化定制也將是未來軟件開發(fā)的主要模式之一。這就需要一種方法,利用分布在網(wǎng)絡中一些可以復用的軟件構(gòu)件,通過這些構(gòu)件之間的一致性訪問實現(xiàn)對這些可復用構(gòu)件的集成,從而生成一些符合要求新的程序(服務)。
軟件復用是在軟件開發(fā)中避免重復勞動的解決方案,其出發(fā)點是應用系統(tǒng)的開發(fā)不再采用一切“從零開始”的模式,而是以已有的工作為基礎,充分利用過去應用系統(tǒng)開發(fā)中積累的知識和經(jīng)驗,如需求分析結(jié)果、設計方案、源代碼、測試計劃及測試案例等,從而將開發(fā)重點集中于應用的特有構(gòu)成成分。
實現(xiàn)軟件復用的關(guān)鍵因素(技術(shù)和非技術(shù)因素)主要包括軟件構(gòu)件技術(shù)(SoftwareComponent Technology)、領(lǐng)域工程(Domain Engineering)、軟件構(gòu)架(SoftwareArchitecture)、軟件再工程(Software Reengineering)、開放系統(tǒng)(Open Engineering)、軟件過程(Software Process)、CASE技術(shù)等以及各種非技術(shù)因素、且各種因素是互相聯(lián)系、互相影響的,它們結(jié)合在一起,共同影響軟件復用的實現(xiàn)。
其中的構(gòu)件技術(shù)是支持軟件復用的核心技術(shù)。在本專利說明書中,構(gòu)件特指具有相對獨立功能和可復用價值的軟件模塊。
構(gòu)件技術(shù)的出現(xiàn)是對傳統(tǒng)軟件開發(fā)過程的一次新變革,它以面向?qū)ο蟾拍顬榛A,是支持軟件復用的核心技術(shù)。在軟件開發(fā)過程中,構(gòu)件的作用與電子設計中集成電路模塊(IC)的作用類似,它隱藏功能的具體實現(xiàn),對外提供嚴格定義的接口。因此有人形象地將構(gòu)件稱為“軟件IC”,如圖1所示。
構(gòu)件是一種具有相對獨立功能和可復用價值的軟件模塊,其具有下列特征1)獨立發(fā)布的軟件實體;2)通過嚴格定義的接口封裝某種特定功能;3)支持在構(gòu)件框架中的即插即用(Plug-n-Play);4)支持與其他的構(gòu)件的協(xié)作與組裝,形成一個具有特定功能的軟件系統(tǒng);5)能夠被實現(xiàn)相同一組接口的其他構(gòu)件替換。
為了支持軟件復用技術(shù),一些組織和公司紛紛推出自己的構(gòu)件技術(shù)標準。目前,有影響的構(gòu)件標準有SUN公司提出的Java構(gòu)件標準JavaBeans、EJB,微軟公司提出的COM、DCOM標準以及對象管理組織(OMG)CORBA3.0規(guī)范中的CCM標準。分別簡述如下1)JavaBeansJavaBeans是SUN公司于1996年9月發(fā)布的一種基于Java語言的構(gòu)件技術(shù)標準規(guī)范。它是構(gòu)件技術(shù)與Java語言的融合?;谠撘?guī)范,開發(fā)者可以編寫一種與平臺無關(guān)的Java構(gòu)件。
2)EJB(Enterprise Java Bean)EJB由SUN公司于1998年3月發(fā)布,它定義了開發(fā)、配置和管理服務器端Java構(gòu)件的接口,允許用戶通過可重用的服務器端構(gòu)件開發(fā)大規(guī)模商業(yè)應用程序。目前,已經(jīng)有包括Oracle、Borland、Tandem、Symantec、Sybase等多家公司宣布在自己產(chǎn)品中支持EJB。
3)CORBA構(gòu)件模型(CCM)CCM(CORBA Component Model)于1999年8月由對象管理組織(OMG)的相關(guān)任務組投票通過,它是CORBA 3.0規(guī)范的重要組成部分,定義了即插即用CORBA對象的創(chuàng)建、組裝和發(fā)布框架。
4)COM/DCOM構(gòu)件COM/DCOM構(gòu)件是微軟公司提出的構(gòu)件標準,COM/DCOM規(guī)范是一個二進制標準,它既不指定構(gòu)件的實現(xiàn)語言,也不限制構(gòu)件的實現(xiàn)方法,它通過提供了遠程操作優(yōu)化機制、授權(quán)訪問機制等服務,以提高遠程方法調(diào)用的效率和安全性。
目前,Internet上出現(xiàn)了很多遵循上述構(gòu)件技術(shù)標準的專門的構(gòu)件庫(如Alphaworks、ComponentPlanet、ComponentSource、Flashline等),提供了多種現(xiàn)成的可用構(gòu)件,這些構(gòu)件庫形成了Internet上的構(gòu)件資源,為軟件復用,基于構(gòu)件的程序開發(fā)提供了基礎。而且隨著構(gòu)件技術(shù)的發(fā)展,網(wǎng)絡構(gòu)件庫的規(guī)模仍在不斷擴大,從而為基于構(gòu)件的程序開發(fā)提供了堅實的基礎,同時也為應用和服務的組合提供了構(gòu)件資源。
但是,目前各種類型的構(gòu)件都使用自己特定的規(guī)范來開發(fā),構(gòu)件描述中對不同類型構(gòu)件之間一致性訪問缺乏必要的支持,造成構(gòu)件搜索、獲取以及分析、組裝等構(gòu)件處理活動的困難。主要有以下兩點1)構(gòu)件描述的外部性信息不充分,即不能清晰一致地說明構(gòu)件“能夠做什么”。現(xiàn)有的構(gòu)件描述語言不能提供足夠的構(gòu)件組織資源和功能分類信息,構(gòu)件的能力描述不充分且不一致,造成上層應用在構(gòu)件搜索、獲取方面的困難。
2)、構(gòu)件接口的行為信息不一致,即不能清晰一致地說明“怎樣使用構(gòu)件”。構(gòu)件的行為是通過構(gòu)件的接口來表示。目前,各類構(gòu)件的接口描述嚴重依賴于構(gòu)件實現(xiàn)的編程語言,造成描述不一致,不能很好地支持構(gòu)件之間的相互訪問。
目前,要在分屬不同構(gòu)件模型的兩個構(gòu)件之間進行一致性訪問,就必須在構(gòu)件之間加一個特殊的轉(zhuǎn)換中間件來交換信息。例如,要在JavaBeans構(gòu)件和CORBA構(gòu)件之間實現(xiàn)一致性訪問,需要以下步驟(1).生成一個JavaBeans-CORBA的描述轉(zhuǎn)換中間件(2).生成一個CORBA-JavaBeans的描述轉(zhuǎn)換中間件;(3)JavaBeans構(gòu)件發(fā)出的訪問信息通過JavaBeans-CORBA描述轉(zhuǎn)換中間件,轉(zhuǎn)換成CORBA構(gòu)件能夠識別的信息。
(4)CORBA構(gòu)件接受這些信息,作出相應,并將應答消息發(fā)送給CORBA-JavaBeans的描述轉(zhuǎn)換中間件,并轉(zhuǎn)換成JavaBeans構(gòu)件能夠識別的信息。
(5)JavaBeans構(gòu)件接受這些信息,完成本次訪問。
同樣,如果JavaBeans構(gòu)件希望和一個ActiveX構(gòu)件交互,還需要一個JavaBeans-ActiveX的描述轉(zhuǎn)換中間件和一個ActiveX-JavaBeans的描述轉(zhuǎn)換中間件,并按上述相同的步驟完成相互訪問;這樣,就使得在不同的構(gòu)件模型之間進行數(shù)據(jù)交換和數(shù)據(jù)共享變得非常復雜和不易實現(xiàn),由于每種構(gòu)件模型的實現(xiàn)方式都不同,因此,每兩種不同構(gòu)件模型之間的通信都需要使用特定的描述轉(zhuǎn)換中間件,而這些中間件并不是通用的,只能是針對某種特定類型特定的構(gòu)件。用這種方式處理來處理n個構(gòu)件間協(xié)同工作所需的交互,則需要數(shù)量級n(n-1)種的描述轉(zhuǎn)換中間件。實現(xiàn)的工作量太大,而且效率顯然不是很高。因此,這種方式不能從根本上解決不同構(gòu)件之間進行透明的一致性訪問問題。
發(fā)明內(nèi)容
本發(fā)明的目的是為克服已有技術(shù)的不足之處,提出一種構(gòu)件封裝和一致性訪問方法在現(xiàn)有的各種構(gòu)件模型(如ActiveX,JavaBeans,EJB等)的基礎上,提出了一種通用的構(gòu)件封裝件,本發(fā)明稱其為統(tǒng)一構(gòu)件描述封裝件(簡稱UCDL封裝件),該封裝件通過對構(gòu)件的封裝來屏蔽構(gòu)件描述和調(diào)用接口的差異,從而實現(xiàn)構(gòu)件的一致性訪問。并以此為基礎,實現(xiàn)對Internet上現(xiàn)有的構(gòu)件資源的統(tǒng)一描述和有效組織,從而更好地支持上層應用對構(gòu)件資源的高效率檢索與一致性訪問。本發(fā)明可在金融、教育、電子商務、電子政務、醫(yī)療衛(wèi)生等應用領(lǐng)域中提高網(wǎng)絡軟件復用和軟件開發(fā)的效率。
本發(fā)明提出一種構(gòu)件進行封裝及一致性訪問方法,如圖2所示,主要步驟如下步驟1、在一臺或多臺計算機上設置構(gòu)件庫,把從互聯(lián)網(wǎng)上獲得的構(gòu)件存儲入構(gòu)件庫,構(gòu)成構(gòu)件庫計算機;
步驟2、在一臺計算機上設置構(gòu)件目錄庫,構(gòu)成構(gòu)件目錄庫計算機。構(gòu)件目錄庫計算機將用來存儲構(gòu)件封裝件及其索引信息;步驟3、構(gòu)件使用方從構(gòu)件庫計算機上提取構(gòu)件,對構(gòu)件進行封裝形成統(tǒng)一形式描述的構(gòu)件封裝件,并將其組織存儲在構(gòu)件目錄庫計算機上。具體步驟見后。
步驟4、構(gòu)件使用方根據(jù)構(gòu)件目錄庫計算機中的構(gòu)件封裝件信息對構(gòu)件資源進行一致性訪問。具體步驟見后。
如前步驟3所述的對構(gòu)件進行封裝的方法,如圖3所示,包括如下步驟1)構(gòu)造一種通用的構(gòu)件封裝件結(jié)構(gòu),該封裝件結(jié)構(gòu)包括用統(tǒng)一形式描述的構(gòu)件靜態(tài)信息部分和構(gòu)件動態(tài)信息部分,其中構(gòu)件靜態(tài)信息部分包括構(gòu)件的基本描述信息、資源位置信息、分類信息(如構(gòu)件的名稱、作者、版本、廠商、大小等等);構(gòu)件動態(tài)信息部分為構(gòu)件接口信息,包括構(gòu)件所提供的接口信息和構(gòu)件運行所需要的接口信息;2)從現(xiàn)有的構(gòu)件庫中提取構(gòu)件,根據(jù)該構(gòu)件的文件擴展名及內(nèi)部自帶標識字段判斷要封裝的構(gòu)件類型,例如區(qū)分出是JavaBean構(gòu)件、ActiveX構(gòu)件或是其他類型構(gòu)件;3)判斷構(gòu)件類型以后,針對不同構(gòu)件類型,提取構(gòu)件自身信息,采用相應的映射方法,將該構(gòu)件自身信息填充到封裝件結(jié)構(gòu)的相應部分(首先根據(jù)構(gòu)件自身描述中的基本信息字段獲得構(gòu)件的靜態(tài)信息,填充到封裝件結(jié)構(gòu)的靜態(tài)信息部分中;然后提取構(gòu)件自身的動態(tài)接口信息,填充到封裝件結(jié)構(gòu)的動態(tài)信息部分中),最后形成用統(tǒng)一形式描述的該構(gòu)件自身信息的UCDL封裝件;構(gòu)件封裝件實際上就是根據(jù)此封裝件結(jié)構(gòu)生成的XML文件形式的構(gòu)件信息描述文件,將其稱為統(tǒng)一構(gòu)件描述封裝件(簡稱UCDL封裝件);4)把步驟3生成的構(gòu)件UCDL封裝件按照其中的分類信息組織到構(gòu)件目錄信息庫中(向構(gòu)件目錄信息庫進行構(gòu)件封裝件注冊),構(gòu)件目錄信息庫按照分類信息為構(gòu)件目錄庫中的所有構(gòu)件UCDL封裝件建立一個總的索引結(jié)構(gòu),構(gòu)件目錄庫信息庫中每一個目錄項為該構(gòu)件的封裝件;而構(gòu)件本身仍然存儲在原有的構(gòu)件庫中;如前步驟4所述的采用上述封裝結(jié)構(gòu)的構(gòu)件的一致性訪問包括以下步驟(1)構(gòu)件使用方根據(jù)UCDL封裝件中的分類信息和基本描述信息,通過目錄信息庫查詢到符合此條件的一組構(gòu)件封裝件;(2)根據(jù)UCDL封裝件結(jié)構(gòu)中的接口信息,進一步找到接口完全匹配的構(gòu)件封裝件;(3)根據(jù)封裝件中的位置信息,從構(gòu)件庫中獲取所需構(gòu)件本身;(4)在構(gòu)件使用方和構(gòu)件之間,利用UCDL封裝件中定義的接口信息,結(jié)合現(xiàn)有的構(gòu)件綁定協(xié)議(如SOAPSimple Object Access Protocol,簡單對象訪問協(xié)議),實現(xiàn)構(gòu)件的相互調(diào)用。
本發(fā)明的特點本發(fā)明為每一種構(gòu)件提供了統(tǒng)一的封裝件結(jié)構(gòu),稱之為UCDL(UniversalComponent Description Language)封裝件結(jié)構(gòu)。在UCDL封裝件結(jié)構(gòu)中,利用統(tǒng)一的術(shù)語空間來表征構(gòu)件“能夠做什么”、“怎么使用構(gòu)件”,并將這些信息用XML表示,便于構(gòu)件之間行為信息的交互與處理,也便于上層應用對各種不同類型的構(gòu)件資源進行一致性訪問。這些不同構(gòu)件模型的構(gòu)件之間的數(shù)據(jù)交換和數(shù)據(jù)共享就都統(tǒng)一變成UCDL封裝件之間的數(shù)據(jù)交換和數(shù)據(jù)共享。UCDL封裝件在保證不同類型構(gòu)件之間能夠相互理解的基礎上,實現(xiàn)了對現(xiàn)有構(gòu)件資源的統(tǒng)一描述和有效組織,各種不同類型的構(gòu)件資源與上層應用之間均可通過該構(gòu)件的UCDL封裝件的訪問接口進行一致性訪問。
本發(fā)明的技術(shù)效果及應用1、采用本發(fā)明的方法,通過對構(gòu)件的封裝來實現(xiàn)不同構(gòu)件之間的一致性訪問,使得需要訪問多種構(gòu)件的客戶程序可以按照統(tǒng)一的方式來訪問不同類型的構(gòu)件,不僅大大簡化了客戶端的程序,還提高了軟件集成的靈活性。
2、本發(fā)明可應用于金融、教育、電子商務、電子政務、醫(yī)療衛(wèi)生等應用領(lǐng)域,針對這些應用領(lǐng)域內(nèi)來自不同供應商、不同模型的各類構(gòu)件,使用本發(fā)明中的通用構(gòu)件描述方法,生成構(gòu)件UCDL封裝件,并統(tǒng)一組織為領(lǐng)域構(gòu)件庫,實現(xiàn)構(gòu)件資源的一致性訪問,從而可靈活地支持本應用領(lǐng)域的業(yè)務流程的形成和動態(tài)調(diào)整以及面向用戶的個性化應用程序的定制和集成。
3、本發(fā)明不僅可以提高軟件開發(fā)人員進一步開發(fā)構(gòu)件平臺和構(gòu)件(程序)挖掘系統(tǒng)的效率,同時還可以根據(jù)終端用戶的需求直接發(fā)現(xiàn)、定制用戶需要的應用程序,為未來面向用戶的主動服務提供統(tǒng)一的構(gòu)件訪問接口。
4、以本發(fā)明的技術(shù)為基礎,可以向用戶提供個性化編程功能,比如可以用來建立與Yahoo、Google等Web搜索引擎類似的構(gòu)件搜索引擎,通過開發(fā)相應的訪問界面,建立構(gòu)件搜索引擎,在因特網(wǎng)上提供構(gòu)件的索引和檢索功能。
5、應用本發(fā)明可以提高軟件系統(tǒng)的安全性。用戶可以根據(jù)網(wǎng)絡環(huán)境和應用安全的需要,隨時利用本發(fā)明的構(gòu)件一致性訪問技術(shù),使用備選構(gòu)件靈活地置換軟件系統(tǒng)所使用的安全性構(gòu)件及其組裝方式,如金融、電子政務等領(lǐng)域的安全防護方面可以起到重要作用。
圖1為構(gòu)件結(jié)構(gòu)示意圖。
圖2為本發(fā)明方法的流程示意圖。
圖3為本發(fā)明的構(gòu)件封裝方法步驟。
圖4為本發(fā)明的構(gòu)件一致性訪問方法步驟。
圖5為本發(fā)明的UCDL封裝件結(jié)構(gòu)示意圖。
圖6為本發(fā)明構(gòu)件目錄庫中的樹形目錄索引結(jié)構(gòu)示意圖。
具體實施例方式
本發(fā)明提出的一種構(gòu)件的封裝及其一致性訪問方法結(jié)合附圖及實施例詳細說明如下本發(fā)明方法的總體步驟,如圖2所示,包括第一步在一臺或多臺計算機上設置構(gòu)件庫,把從互聯(lián)網(wǎng)上獲得的構(gòu)件存儲入構(gòu)件庫,構(gòu)成構(gòu)件庫計算機;第二步在一臺計算機上設置構(gòu)件目錄庫,構(gòu)成構(gòu)件目錄庫計算機。構(gòu)件目錄庫計算機將用來存儲構(gòu)件封裝件及其索引信息;第三步構(gòu)件使用方從構(gòu)件庫計算機上提取構(gòu)件,對構(gòu)件進行封裝形成統(tǒng)一形式描述的構(gòu)件封裝件,并將其組織存儲在構(gòu)件目錄庫計算機上。具體步驟見后。
第四步構(gòu)件使用方根據(jù)構(gòu)件目錄庫計算機中的構(gòu)件封裝件信息對構(gòu)件資源進行一致性訪問。具體步驟見后。
如前述總體第三步所述的構(gòu)件的封裝方法,如圖3所示,包括如下具體步驟步驟1構(gòu)造一種通用的構(gòu)件封裝件結(jié)構(gòu)。構(gòu)件封裝件實際上就是根據(jù)此結(jié)構(gòu)生成的XML文件形式的構(gòu)件信息描述文件,本發(fā)明稱其為統(tǒng)一構(gòu)件描述封裝件(簡稱UCDL封裝件),表示了UCDL封裝件是如何描述他所封裝的異構(gòu)構(gòu)件的。
本發(fā)明UCDL封裝件的結(jié)構(gòu)如圖5所示,包括四個部分基本描述信息、資源位置信息、分類信息和構(gòu)件接口信息,前三部分都屬于構(gòu)件靜態(tài)信息部分;而構(gòu)件的動態(tài)信息部分為構(gòu)件接口信息,又分為構(gòu)件提供的接口信息和構(gòu)件使用的接口信息。各部分與其對應的描述符以及其含義,如表1所示表1
構(gòu)件中的各種信息可根據(jù)上述表中各描述符的含義轉(zhuǎn)換成相應的描述符,表中內(nèi)容具體說明如下基本描述信息該部分指明構(gòu)件的非行為特征屬性(如構(gòu)件的全局唯一標識、名稱、作者、版本、廠商、大小等項條目),提供構(gòu)件的靜態(tài)信息。在基本描述信息部分,在需要的時候可以添加新的描述符來對應構(gòu)件的新增信息,保證描述符的可擴展性和靈活性。
分類信息封裝件結(jié)構(gòu)中的分類信息從構(gòu)件模型、應用領(lǐng)域、編程語言、應用領(lǐng)域、操作系統(tǒng)、構(gòu)件功能5個分類角度的描述符對應構(gòu)件的分類信息,每個分類信息描述符包括一個基本術(shù)語(term)集,每個構(gòu)件的分類信息必需從該基本術(shù)語集中選擇一個或多個術(shù)語作為該項的描述;本發(fā)明的基本術(shù)語集的實施例如表2所示。
表2分類信息基本術(shù)語集
本發(fā)明的分類信息的構(gòu)件功能項的術(shù)語詞表中可以進一步擴展子功能頂,以便對構(gòu)件功能的描述更加詳細和具體。本發(fā)明的構(gòu)件子功能項的術(shù)語集實施例如表3所示。
表3構(gòu)件功能子項術(shù)語集
資源位置信息這部分指明構(gòu)件的存儲位置,本實施例的構(gòu)件位置信息用URL表示。
動態(tài)信息本發(fā)明把構(gòu)件的動態(tài)信息歸為兩類提供的接口信息和需要的接口信息。構(gòu)件提供的接口信息用接口名稱、文字描述、操作列表、發(fā)出的事件以及對外展示的屬性來表示。操作列表中的每個操作進一步用操作名稱、文字描述、操作參數(shù)、一組前件、后件及不變量、事件和屬性等來描述。構(gòu)件需要的接口信息指構(gòu)件正常運行需要外界提供的條件,它可以在兩個層次上指定一是在構(gòu)件級別,直接指明本構(gòu)件正常運行所需要的構(gòu)件;另一個是在服務級別,即用操作、事件及其語義來詳細說明構(gòu)件的需求。
為了滿足構(gòu)件信息獨立于特定構(gòu)件技術(shù)和易于擴展的要求,本發(fā)明選用擴展標記語言XML來表示各部分構(gòu)件信息的描述符。XML是W3C組織提出的標準,是一種與平臺無關(guān)的結(jié)構(gòu)化信息描述語言,是目前Web中最通用的數(shù)據(jù)描述格式。構(gòu)件信息描述符中的各個描述項可以通過定義相應的擴展標記語言XML標簽來表示,這樣每個構(gòu)件的描述就成為一個XML文檔,構(gòu)件的搜索、訪問等操作就可以轉(zhuǎn)換為對XML文檔的讀寫和檢索處理。
步驟2在構(gòu)件封裝件生成之前,首先判斷該構(gòu)件的類型。根據(jù)構(gòu)件文件的擴展名及內(nèi)部自帶標識字段判斷要封裝的構(gòu)件類型是JavaBean構(gòu)件,還是ActiveX構(gòu)件,或是其他類型構(gòu)件。
步驟3確定構(gòu)件的類型后,根據(jù)構(gòu)件類型采用相應的映射方法。將該構(gòu)件自身信息轉(zhuǎn)換成相應的描述符填充到封裝件結(jié)構(gòu)的相應部分中,形成用統(tǒng)一形式描述的該構(gòu)件自身信息的封裝件;本發(fā)明對JavaBeans構(gòu)件,提出JavaBeans-to-UCDL的映射方法(JUMA);對ActiveX構(gòu)件,提出ActiveX-to-UCDL的映射方法(AUMA)。其他類型構(gòu)件的UCDL封裝件生成可以以上述映射方法為基礎,選擇針對不同類型構(gòu)件的UCDL封裝件映射方法。
如果構(gòu)件判斷類行為JavaBean構(gòu)件,本發(fā)明采用的映射方法包括以下步驟
1.按照構(gòu)造好的UCDL封裝件結(jié)構(gòu)生成一個各描述符為空的XML文件作為構(gòu)件封裝件,為填充構(gòu)件信息做準備;2.分配一個唯一標識,填充到構(gòu)件封裝件的ID描述符中,作為構(gòu)件封裝件的全局唯一標識;3.讀取該JavaBean構(gòu)件的Bean information類,這是JavaBean構(gòu)件規(guī)范定義的;4.根據(jù)JavaBean構(gòu)件規(guī)范定義的Bean information類的結(jié)構(gòu),通過Beaninformation類獲取構(gòu)件名稱、作者、版本、構(gòu)件大小,將結(jié)果對應描述符(Name,Author,Vendor,Version,Date,Size)填充到UCDL封裝件的基本信息部分中。
5.將Bean information類中的Description字段信息對應的描述符FunctionalDescription填充至UCDL中的基本信息部分中;6.利用已有的自然語言處理模塊對Bean information類中的Description字段內(nèi)容進行關(guān)鍵字檢索,得到構(gòu)件的應用領(lǐng)域和構(gòu)件功能的對應的描述符Application Field和Component Function,填充到UCDL封裝件的基本信息中;7.UCDL封裝件的Component Model描述符填充為“JavaBean”,ProgramLanguage描述符填充為“Java”;8.啟動JavaBean的自檢機制,得到構(gòu)件的屬性、事件、方法;9.將JavaBean中的屬性信息對應的描述符填充到UCDL封裝件的提供接口信息的屬性描述部分中;10.將JavaBean中的事件信息對應的描述符填充到UCDL封裝件的提供接口信息的事件描述部分中;11.將JavaBean中的方法信息對應的描述符填充到UCDL封裝件的提供接口信息的方法描述部分;12.遍歷UCDL的所有域,將為空的域設置為默認值;13.根據(jù)此JavaBean構(gòu)件的存儲位置信息,填充封裝件的描述位置信息描述符為指向此構(gòu)件的URL。
如果構(gòu)件判斷類行為ActiveX構(gòu)件,本發(fā)明采用的映射方法按照以下步驟執(zhí)行1.按照構(gòu)造好的UCDL封裝件結(jié)構(gòu)生成一個各描述符為空的XML文件作為構(gòu)件封裝件,為填充構(gòu)件信息做準備;2.分配一個唯一標識,填充到構(gòu)件封裝件的ID描述符,作為構(gòu)件封裝件的全局唯一標識;3.根據(jù)ActiveX構(gòu)件標準通過構(gòu)件基本信息字段獲取構(gòu)件名稱、作者、版本、構(gòu)件大小等信息,將結(jié)果對應描述符(Name,Author,Vendor,Version,Date,Size)填充到UCDL封裝件的基本描述信息中;4.利用自然語言處理控件對ActiveX控件中的Type library類的內(nèi)容進行關(guān)鍵字檢索分析,將結(jié)果對應描述符(Application Field和Component Function)填充到UCDL封裝件的基本描述信息中;5.將ActiveX中的Interfaces信息填充至UCDL封裝件中的接口信息中;
6.遍歷UCDL的所有域,將為空的域設置為參考模型提供的默認值;7.根據(jù)此ActiveX構(gòu)件的存儲位置信息,填充封裝件的資源位置信息描述符為指向此構(gòu)件的URL。
以上步驟完成以后,保存XML文件形式的UCDL封裝件。
步驟4向構(gòu)件目錄信息庫進行構(gòu)件封裝件注冊——即不但要把封裝件內(nèi)容存儲到構(gòu)件目錄信息庫中,還要按照封裝件中的分類信息對構(gòu)件進行組織分類索引,形成層次化的索引結(jié)構(gòu)。
本發(fā)明使用自定義的構(gòu)件目錄服務協(xié)議(CDSP)來完成請求注冊方和目錄信息庫之間的關(guān)于構(gòu)件信息的注冊,取消,修改和搜索的功能交互。
本發(fā)明的CDSP協(xié)議中消息對象的具體格式如下CDSP Message=”(”MessageType MessageParameter*”)”MessageType=”Register” 注冊|”DeRegister”取消|”Modify”修改|”Search”搜索MessageParameter=”sender” Expression|”receiver” Expression|”content”Expression|”reply-with” Expression|”in-reply-to”Expression|”language” Expression|”ontology” Expression消息中表達式的生成規(guī)則<Expression> ∷=<word>|<quotation>|<string>|(<word>{<whitespace><expression>}*)<word> ∷=<character><character>*<character> ∷=<alphabetic>|<numeric>|<special>
<special>∷=<|>|=|+|-|*|/|&|^|~|_|@|$|%||.|!|?<quotation> ∷=‘<expr>|‘<comma-expr>
<comma-expr> ∷=<word>|<quotation>|<string>|,<comma-expr>|(<word>{<white space><comma-expr>}*)<string> ∷=“<string char>*)|#<digit><didit>*”<ascii>*<string char>∷=\<ascii>|<ascii>-\-<double-quote>
CDSP消息中各個消息參數(shù)的含義如表4所示。
表4
具體注冊過程如下當要向目錄信息庫注冊一個構(gòu)件封裝件時,首先把構(gòu)件封裝件的內(nèi)容填入CDSP消息包中的content字段,協(xié)議包中的消息類型字段定義為注冊,信息發(fā)送者字段標注為構(gòu)件封裝件注冊請求方,消息接受者字段標注為構(gòu)件目錄信息庫。然后通過現(xiàn)有的底層協(xié)議(如HTTP,TCP/IP)發(fā)送到目錄信息庫。
目錄信息庫接收到表示構(gòu)件封裝件注冊的CDSP消息包以后,首先發(fā)出一條確認應答信息回復以外,然后從CDSP消息包的content字段中讀取構(gòu)件封裝件出來。讀取到構(gòu)件封裝件以后,把構(gòu)件封裝件內(nèi)容存儲到數(shù)據(jù)庫,形成構(gòu)件目錄信息庫的一個分類和獲取單元—目錄登記項。同時根據(jù)構(gòu)件封裝件分類信息的5方面,生成構(gòu)件封裝件的索引值,并將其加入到目錄信息庫索引目錄中,該索引目錄是按照構(gòu)件封裝件結(jié)構(gòu)中的分類信息中術(shù)語集的術(shù)語進行組織的樹形目錄結(jié)構(gòu)。如圖6所示目錄樹中的最下層葉節(jié)點(圖中的圓圈)對應構(gòu)件,非葉節(jié)點表示一組具有相同分類屬性的構(gòu)件。UCDL封裝件結(jié)構(gòu)中的分類信息的構(gòu)件功能、構(gòu)件模型、操作系統(tǒng)、編程語言與應用領(lǐng)域5個構(gòu)件分類信息部分分別對應于目錄樹中根下面的五個子樹,而5個分類信息角度下,每個分支代表的是該種分類角度的基本術(shù)語(term)集中的一個術(shù)語,其中對應于構(gòu)件功能目錄子樹還有子分類目錄子樹。構(gòu)件封裝件索引就按照封裝件中的分類信息對應到葉子節(jié)點上(應用方在搜索構(gòu)件最開始的時候,絕大部分都是從構(gòu)件的分類信息查詢?nèi)胧?,因此這樣的索引目錄結(jié)構(gòu)能夠幫助構(gòu)件應用方根據(jù)所需構(gòu)件的分類信息快速的搜索和發(fā)現(xiàn)滿足條件的構(gòu)件,縮小進一步搜索的范圍,達到提高搜索效率,降低成本的目的)。
如前述總體第四步所述的采用上述封裝結(jié)構(gòu)的構(gòu)件的一致性訪問方法,如圖4所示,包括如下具體步驟1、首先構(gòu)件使用方根據(jù)封裝件結(jié)構(gòu)中的構(gòu)件分類信息和基本描述信息,查詢到能完成所需功能的的一組構(gòu)件封裝件。
2、根據(jù)UCDL封裝件結(jié)構(gòu)中的接口信息,進一步找到接口完全匹配的構(gòu)件封裝件。
3、根據(jù)封裝件中的位置(Location)信息,從構(gòu)件庫中獲取構(gòu)件本身。然后把構(gòu)件封裝件和構(gòu)件代碼本身一起返回給構(gòu)件應用方,4、在構(gòu)件使用方和構(gòu)件之間,利用UCDL封裝件中定義的接口信息描述符,結(jié)合現(xiàn)有的構(gòu)件綁定協(xié)議(如SOAPSimple Object Access Protocol,簡單對象訪問協(xié)議),來實現(xiàn)構(gòu)件的相互調(diào)用。本發(fā)明采用SOAP協(xié)議和UCDL封裝件結(jié)合來實現(xiàn)構(gòu)件的相互調(diào)用的實施例過程如下首先構(gòu)件使用方發(fā)出SOAP請求進行初始化。在這個過程中,將根據(jù)UCDL封裝件中的接口描述符,包裝成一個合法的SOAP請求,把此SOAP請求提交給構(gòu)件運行環(huán)境,然后構(gòu)件運行環(huán)境根據(jù)不同構(gòu)件類型使用相應的構(gòu)件調(diào)用方法,將SOAP請求解釋執(zhí)行并調(diào)用構(gòu)件本身。構(gòu)件被調(diào)用后,其調(diào)用的返回結(jié)果將按照UCDL封裝件中定義的操作描述符的返回值信息打包,以SOAP包格式返回至構(gòu)件使用方。使用方打開SOAP返回信息包就可以獲取調(diào)用結(jié)果了,整個構(gòu)件調(diào)用過程結(jié)束。
權(quán)利要求
1.一種構(gòu)件封裝和一致性訪問方法,包括以下步驟1)在一臺或多臺計算機上設置構(gòu)件庫,并將從互聯(lián)網(wǎng)獲得的構(gòu)件存入構(gòu)件庫中,構(gòu)成構(gòu)件庫計算機;2)在一臺計算機上設置構(gòu)件目錄庫,構(gòu)成構(gòu)件目錄庫計算機;3)構(gòu)件使用方從構(gòu)件庫計算機上提取構(gòu)件,對構(gòu)件進行封裝形成用統(tǒng)一形式描述的構(gòu)件封裝件,并將該封裝件組織存儲在構(gòu)件目錄庫計算機上。4)構(gòu)件使用方根據(jù)構(gòu)件目錄庫計算機中的構(gòu)件封裝件信息對構(gòu)件資源進行一致性訪問。
2.如權(quán)利要求1所述的構(gòu)件的封裝和一致性訪問的方法,其特征在于,所述對構(gòu)件進行封裝的方法包括以下步驟1)構(gòu)造一種通用構(gòu)件封裝件結(jié)構(gòu)該封裝件結(jié)構(gòu)分為用統(tǒng)一形式描述的構(gòu)件靜態(tài)信息部分和構(gòu)件動態(tài)信息部分,其中構(gòu)件靜態(tài)信息部分包括構(gòu)件的基本描述信息、資源位置信息、分類信息;構(gòu)件動態(tài)信息部分為構(gòu)件接口信息,包括構(gòu)件所提供的接口信息和構(gòu)件運行所需要的接口信息;2)從現(xiàn)有的構(gòu)件庫中提取構(gòu)件,根據(jù)該構(gòu)件的文件擴展名及內(nèi)部自帶標識字段判斷要封裝的構(gòu)件類型;3)針對不同構(gòu)件類型,提取構(gòu)件自身信息,采用相應的映射方法,將該構(gòu)件自身信息轉(zhuǎn)化并填充到封裝件結(jié)構(gòu)的相應部分中,形成用統(tǒng)一形式描述的構(gòu)件封裝件;4)向目錄信息庫注冊該構(gòu)件封裝件把步驟3生成的構(gòu)件封裝件按照其中的分類信息組織到構(gòu)件目錄信息庫中,構(gòu)件目錄信息庫按照構(gòu)件分類信息為構(gòu)件目錄庫中的所有構(gòu)件封裝件建立一個總的索引結(jié)構(gòu),構(gòu)件目錄庫信息庫中每一個目錄項為該構(gòu)件的封裝件;而構(gòu)件本身仍然存儲在原有的構(gòu)件庫中;
3.如權(quán)利要求1所述的構(gòu)件的封裝和一致性訪問的方法,其特征在于,所述構(gòu)件的一致性訪問包括以下步驟1)構(gòu)件使用方根據(jù)封裝件中的分類信息和基本描述信息,通過目錄信息庫的索引結(jié)構(gòu)查詢到符合此條件的一組構(gòu)件封裝件;2)根據(jù)封裝件中的接口信息,進一步找到接口完全匹配的構(gòu)件封裝件;3)根據(jù)封裝件中的位置信息,從構(gòu)件庫中獲取所需構(gòu)件本身;4)在構(gòu)件使用方和構(gòu)件之間,利用UCDL封裝件中定義的接口信息描述符,結(jié)合現(xiàn)有的構(gòu)件綁定協(xié)議,實現(xiàn)構(gòu)件的相互調(diào)用。
全文摘要
本發(fā)明涉及一種構(gòu)件的封裝和一致性訪問的方法,屬于軟件工程技術(shù)領(lǐng)域。本發(fā)明包括在一臺或多臺計算機上設置構(gòu)件庫,并將從互聯(lián)網(wǎng)獲得的構(gòu)件存入構(gòu)件庫中,構(gòu)成構(gòu)件庫計算機;在一臺計算機上設置構(gòu)件目錄庫,構(gòu)成構(gòu)件目錄庫計算機;構(gòu)件使用方從構(gòu)件庫計算機上提取構(gòu)件,對構(gòu)件進行封裝形成構(gòu)件封裝件,并將其組織存儲在構(gòu)件目錄庫計算機上;構(gòu)件使用方根據(jù)構(gòu)件目錄庫計算機中的構(gòu)件封裝件信息對構(gòu)件資源進行一致性訪問。本發(fā)明可實現(xiàn)對現(xiàn)有的構(gòu)件資源的統(tǒng)一描述和有效組織,從而更好地支持上層應用對構(gòu)件資源的高效率檢索與一致性訪問。本發(fā)明可在金融、教育、電子商務、電子政務、醫(yī)療衛(wèi)生等應用領(lǐng)域中提高網(wǎng)絡軟件復用和軟件開發(fā)的效率。
文檔編號G06F9/44GK1564129SQ20041003065
公開日2005年1月12日 申請日期2004年4月2日 優(yōu)先權(quán)日2004年4月2日
發(fā)明者張堯?qū)W, 方存好, 劉博 , 周悅芝, 郭關(guān)飛, 韋理, 徐鵬志 申請人:清華大學