專利名稱:構(gòu)件初始化過程中的構(gòu)造方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計(jì)算機(jī)軟件技術(shù)領(lǐng)域,特別涉及計(jì)算機(jī)構(gòu)件化軟件系統(tǒng)領(lǐng)域,具體是指一種構(gòu)件初始化過程中的構(gòu)造方法。
背景技術(shù):
隨著現(xiàn)代構(gòu)件化計(jì)算機(jī)軟件技術(shù)的進(jìn)一步發(fā)展,CAR(Component Assembly Runtime)構(gòu)件技術(shù)是一種使用面向構(gòu)件編程(Component Oriented Programming,簡稱COP)技術(shù),它定義了一套網(wǎng)絡(luò)編程時代的構(gòu)件編程模型和編程規(guī)范,規(guī)定了一組構(gòu)件間相互調(diào)用的標(biāo)準(zhǔn),使得二進(jìn)制構(gòu)件能夠自描述,能夠在運(yùn)行時動態(tài)鏈接。
目前,CAR構(gòu)件技術(shù)已在某些先進(jìn)的嵌入式操作系統(tǒng)上實(shí)現(xiàn),在該嵌入式操作系統(tǒng)的SDK(Software Development Kit)下,用戶很容易編寫出自己的構(gòu)件。
CAR構(gòu)件技術(shù)的基礎(chǔ)思想來源于微軟的COM,但它對微軟的COM進(jìn)行了拓展,并且二者不兼容。CAR構(gòu)件技術(shù)由CAR語言(構(gòu)件描述語言,描述構(gòu)件的元數(shù)據(jù)信息)、CAR編譯器、自動代碼生成工具以及CAR構(gòu)件基礎(chǔ)庫支持。CAR構(gòu)件技術(shù)體現(xiàn)了網(wǎng)絡(luò)編程時代的特性,編程界面簡單。
CAR構(gòu)件構(gòu)造機(jī)制類似普通的C++對象的構(gòu)造過程,C++對象通過類的不同的構(gòu)造函數(shù)在不同的情況下構(gòu)造C++對象,不同的構(gòu)造函數(shù)表現(xiàn)在不同的參數(shù)。同時,對于傳統(tǒng)的C++對象的構(gòu)造機(jī)制來說,主要有兩個功能一個是分配對象所需的空間,另一個初始化成員變量。C++的構(gòu)造函數(shù)是普通的函數(shù),故它不能遠(yuǎn)程化執(zhí)行,而且它沒有返回值,所以構(gòu)造失敗時,想知道失敗的原因會變的異常困難,而對于需要遠(yuǎn)程構(gòu)造的構(gòu)件來說,構(gòu)造失敗會是個常見的現(xiàn)象,客戶端需要了解失敗的原因,以作出相應(yīng)的處理,而傳統(tǒng)的C++的構(gòu)造過程和機(jī)制就無法滿足這樣的需求,因此限制了分布式系統(tǒng)中的構(gòu)件技術(shù)的進(jìn)一步發(fā)展。
發(fā)明內(nèi)容
本發(fā)明的目的是克服了上述現(xiàn)有技術(shù)中的缺點(diǎn),提供一種能夠根據(jù)構(gòu)件描述文件自動生成構(gòu)件的構(gòu)造接口類代碼框架、支持客戶端和服務(wù)端的遠(yuǎn)程構(gòu)造方式、將構(gòu)造結(jié)果返回、執(zhí)行效率較高、運(yùn)行性能穩(wěn)定可靠、適用范圍較為廣泛的構(gòu)件初始化過程中的構(gòu)造方法。
為了實(shí)現(xiàn)上述的目的,本發(fā)明的構(gòu)件初始化過程中的構(gòu)造方法如下 該構(gòu)件初始化過程中的構(gòu)造方法,包括通過計(jì)算機(jī)網(wǎng)絡(luò)相連接的服務(wù)端和客戶端,其主要特點(diǎn)是,所述的方法包括以下步驟 (1)系統(tǒng)進(jìn)行初始化操作; (2)系統(tǒng)根據(jù)用戶操作,在構(gòu)件描述文件中添加構(gòu)件接口描述信息和特定的構(gòu)造函數(shù); (3)系統(tǒng)讀取該構(gòu)件描述文件,產(chǎn)生元數(shù)據(jù),并根據(jù)該特定的構(gòu)造函數(shù)在服務(wù)端生成包括構(gòu)造接口方法的構(gòu)造接口類代碼框架; (4)系統(tǒng)得到元數(shù)據(jù),并根據(jù)該元數(shù)據(jù)在客戶端生成構(gòu)造調(diào)用方法; (5)系統(tǒng)根據(jù)用戶調(diào)用和元數(shù)據(jù)信息,在客戶端產(chǎn)生構(gòu)件類廠對象; (6)系統(tǒng)在服務(wù)端查詢相應(yīng)的構(gòu)造接口類; (7)系統(tǒng)根據(jù)查詢到的構(gòu)造接口類調(diào)用相應(yīng)的構(gòu)造接口方法,并將操作結(jié)果作為返回值返回,從而完成構(gòu)件的初始化構(gòu)造。
該構(gòu)件初始化過程中的構(gòu)造方法的特定的構(gòu)造函數(shù)的格式為構(gòu)造函數(shù)標(biāo)識([輸入]輸入?yún)?shù))。
該構(gòu)件初始化過程中的構(gòu)造方法的構(gòu)造函數(shù)標(biāo)識為constructor。
該構(gòu)件初始化過程中的構(gòu)造方法的在服務(wù)端生成包括構(gòu)造接口方法的構(gòu)造接口類代碼框架包括以下步驟 (1)在服務(wù)端生成構(gòu)造接口類的代碼; (2)根據(jù)所述的特定的構(gòu)造函數(shù)生成該構(gòu)造接口類的構(gòu)造接口方法,該構(gòu)造接口方法的格式為錯誤代碼接口方法標(biāo)識(輸入?yún)?shù),構(gòu)件指針),其中錯誤代碼為該構(gòu)造接口方法的返回值; (3)在該構(gòu)造接口方法的執(zhí)行過程中產(chǎn)生該構(gòu)件并進(jìn)行初始化的操作,并將構(gòu)件產(chǎn)生和初始化操作的錯誤代碼作為返回值返回。
該構(gòu)件初始化過程中的構(gòu)造方法的在客戶端生成構(gòu)造調(diào)用方法包括以下步驟 (1)在客戶端根據(jù)構(gòu)件接口元數(shù)據(jù),產(chǎn)生特定的構(gòu)造函數(shù)和構(gòu)件接口構(gòu)造調(diào)用方法,該構(gòu)造調(diào)用方法的格式為錯誤代碼構(gòu)造方法標(biāo)識(輸入?yún)?shù),構(gòu)件指針),其中錯誤代碼為該構(gòu)造調(diào)用方法的返回值; (2)在該構(gòu)造調(diào)用方法的執(zhí)行過程中產(chǎn)生構(gòu)件類廠對象、在服務(wù)端查詢相應(yīng)的構(gòu)造接口類、根據(jù)該構(gòu)造接口類調(diào)用相應(yīng)的構(gòu)造接口方法以完成產(chǎn)生構(gòu)件和初始化構(gòu)造的操作,并將上述操作的錯誤代碼作為返回值返回。
該構(gòu)件初始化過程中的構(gòu)造方法的構(gòu)造方法標(biāo)識為New。
采用了該發(fā)明的構(gòu)件初始化過程中的構(gòu)造方法,由于系統(tǒng)在初始化過程中根據(jù)構(gòu)件描述文件中的構(gòu)件接口元數(shù)據(jù)和特定的構(gòu)造函數(shù)信息在服務(wù)端生成包括構(gòu)造接口方法的構(gòu)造接口類代碼框架,同時在客戶端自動生成對應(yīng)的構(gòu)造調(diào)用方法,并將操作的結(jié)果作為返回值返回給用戶,從而可靠實(shí)現(xiàn)了客戶端和服務(wù)端的構(gòu)件遠(yuǎn)程構(gòu)造方式,并能夠較好的支持分布式系統(tǒng)應(yīng)用;同時將構(gòu)造結(jié)果返回用戶,便于用戶針對性的進(jìn)行處理,從而提高了開發(fā)人員的開發(fā)效率和程序的執(zhí)行效率,降低了開發(fā)難度,增強(qiáng)了程序運(yùn)行性能的穩(wěn)定性,適用范圍較為廣泛,為分布式構(gòu)件化軟件系統(tǒng)的進(jìn)一步發(fā)展奠定了堅(jiān)實(shí)的基礎(chǔ)。
圖1為本發(fā)明的構(gòu)件初始化過程中的構(gòu)造方法的執(zhí)行過程示意圖。
圖2為本發(fā)明的構(gòu)件初始化過程中的構(gòu)造方法的執(zhí)行過程中的內(nèi)存結(jié)構(gòu)示意圖。
圖3為本發(fā)明的構(gòu)件初始化過程中的構(gòu)造方法的接口繼承關(guān)系示意圖。
具體實(shí)施例方式 為了能夠更清楚地理解本發(fā)明的技術(shù)內(nèi)容,特舉以下實(shí)施例詳細(xì)說明。
請參閱圖1所示,該構(gòu)件初始化過程中的構(gòu)造方法,包括通過計(jì)算機(jī)網(wǎng)絡(luò)相連接的服務(wù)端和客戶端,其中,所述的方法包括以下步驟 (1)系統(tǒng)進(jìn)行初始化操作; (2)系統(tǒng)根據(jù)用戶操作,在構(gòu)件描述文件中添加構(gòu)件接口描述信息和特定的構(gòu)造函數(shù),該特定的構(gòu)造函數(shù)的格式為構(gòu)造函數(shù)標(biāo)識([輸入]輸入?yún)?shù)),其中該構(gòu)造函數(shù)標(biāo)識可以為constructor,當(dāng)然也可以根據(jù)編程開發(fā)人員的習(xí)慣采用其它的標(biāo)識字符串; (3)系統(tǒng)讀取該構(gòu)件描述文件,產(chǎn)生元數(shù)據(jù),并根據(jù)該特定的構(gòu)造函數(shù)在服務(wù)端生成包括構(gòu)造接口方法的構(gòu)造接口類代碼框架,包括以下步驟 (a)在服務(wù)端生成構(gòu)造接口類的代碼; (b)根據(jù)所述的特定的構(gòu)造函數(shù)生成該構(gòu)造接口類的構(gòu)造接口方法,該構(gòu)造接口方法的格式為錯誤代碼接口方法標(biāo)識(輸入?yún)?shù),構(gòu)件指針),其中錯誤代碼為該構(gòu)造接口方法的返回值; (c)在該構(gòu)造接口方法的執(zhí)行過程中進(jìn)行產(chǎn)生該構(gòu)件并進(jìn)行初始化的操作,并將構(gòu)件產(chǎn)生和初始化操作的錯誤代碼作為返回值返回; (4)系統(tǒng)得到元數(shù)據(jù),并根據(jù)該元數(shù)據(jù)在客戶端生成構(gòu)造調(diào)用方法,包括以下步驟 (a)在客戶端根據(jù)構(gòu)件接口元數(shù)據(jù),產(chǎn)生特定的構(gòu)造函數(shù)和構(gòu)件接口構(gòu)造調(diào)用方法,該構(gòu)造調(diào)用方法的格式為錯誤代碼構(gòu)造方法標(biāo)識(輸入?yún)?shù),構(gòu)件指針),其中錯誤代碼為該構(gòu)造調(diào)用方法的返回值,其中該構(gòu)造方法標(biāo)識可以為New,當(dāng)然也可以根據(jù)編程開發(fā)人員的習(xí)慣采用其它的標(biāo)識字符串; (b)在該構(gòu)造調(diào)用方法的執(zhí)行過程中產(chǎn)生構(gòu)件類廠對象、在服務(wù)端查詢相應(yīng)的構(gòu)造接口類、根據(jù)該構(gòu)造接口類調(diào)用相應(yīng)的構(gòu)造接口方法以完成產(chǎn)生構(gòu)件和初始化構(gòu)造的操作,并將上述操作的錯誤代碼作為返回值返回; (5)系統(tǒng)根據(jù)用戶調(diào)用和元數(shù)據(jù)信息,在客戶端產(chǎn)生構(gòu)件類廠對象; (6)系統(tǒng)在服務(wù)端查詢相應(yīng)的構(gòu)造接口類; (7)系統(tǒng)根據(jù)查詢到的構(gòu)造接口類調(diào)用相應(yīng)的構(gòu)造接口方法,并將操作結(jié)果作為返回值返回,從而完成構(gòu)件的初始化構(gòu)造。
在實(shí)際應(yīng)用當(dāng)中,采用本發(fā)明的上述方法的CAR構(gòu)件在進(jìn)行構(gòu)造的過程中,具有以下特點(diǎn) (1)遠(yuǎn)程構(gòu)造特性 遠(yuǎn)程化是CAR構(gòu)件接口的能力,而CAR構(gòu)件的構(gòu)造則是個接口方法。這樣就允許從遠(yuǎn)程帶參數(shù)得構(gòu)造某個CAR構(gòu)件。
構(gòu)件的本地構(gòu)造方法,例如在(100,110)的位置構(gòu)造一個圖形控件按鈕對象 Position pos={100,110}; IButtonSam*pbs=NULL; ECODE ec=CButtonSam.New(&pos,&pbs); if(FAILED(ec)){ printf("Failed to create object with using Positon,\ ec=0x%08x\n",ec); goto ErrorExit; } 構(gòu)件的遠(yuǎn)程(指異進(jìn)程)構(gòu)造方法,比如 ec=CButtonSam.NewInContext(CTX_DIFF_DOMAIN,&pos,&pbs); 告訴系統(tǒng)將服務(wù)創(chuàng)建指異進(jìn)程,類似微軟com對象的創(chuàng)建,其他的過程沒有大的差別。
(2)CAR構(gòu)件的構(gòu)造的返回值特性 以上面的例子來說明。構(gòu)造時返回ec,它是系統(tǒng)定義的error code,通過分析它的值,就可以知道再構(gòu)造時發(fā)生了什么錯誤,進(jìn)而做出響應(yīng)的處理。
這時構(gòu)件對象的服務(wù)接口由New函數(shù)的最后一個參數(shù)帶傳出來,而傳統(tǒng)的C++構(gòu)造函數(shù)也是不能通過參數(shù)帶出構(gòu)造結(jié)果的。
(3)框架代碼的自動生成特性 首先是服務(wù)端代碼自動生成 CAR構(gòu)件給程序員提供了最大程度的方便,只需要在構(gòu)件描述文件(car文件)中添加特殊的構(gòu)造函數(shù)constructor(),系統(tǒng)便會自動生成構(gòu)造接口,如_CButtonSam_IClassObject_,它帶有和構(gòu)造參數(shù)相對應(yīng)的接口方法,比如CreateObjectWithPos(/*[in]*/PPosition pos,/*[out]*/IObject**ppNewObj)。從中可以看出,它的函數(shù)名和程序員在構(gòu)造對象時所帶的構(gòu)造參數(shù)緊密相關(guān),此方法會根據(jù)用戶傳進(jìn)來的參數(shù)構(gòu)造出構(gòu)件對象。由于接口_CButtonSam_IClassObject_對用戶是不可見的,故其接口CreateObjectWithPos()由系統(tǒng)根據(jù)car文件生成代碼,用戶只需要實(shí)現(xiàn)GetPosition()和constuctor()函數(shù)就可以了。
構(gòu)件描述文件(Car文件)的寫法,請見如下所示 module { typedef struct{ int x; inty; }Position,*PPosition; //服務(wù)端所支持的其它接口 interface IButtonSam{ GetPosition( [out]PPosition pPos); } class CButtonSam{ constructor( [in]PPosition pos); //服務(wù)端所支持的其它接口 interface IButtonSam; } } 接著是客戶端代碼自動生成 根據(jù)構(gòu)件接口元數(shù)據(jù),系統(tǒng)為客戶端生成方法ECODE New(/*[in]*/PPosition pos,/*[out]*/IButtonSam**pIButtonSam),該方法先調(diào)用傳統(tǒng)的EzGetClassObject方法產(chǎn)生構(gòu)件對象類廠,再查詢到構(gòu)造接口如_CButtonSam_IClassObject_,再根據(jù)參數(shù)的不同調(diào)用相應(yīng)的構(gòu)造接口方法,如CreateObjectWithPos等。其執(zhí)行流程請參閱圖1所示,其中中間部分為由系統(tǒng)生成的代碼,最左邊部分為客戶端用戶關(guān)心的代碼,最右邊為服務(wù)端用戶關(guān)心的代碼。
在CAR構(gòu)件的構(gòu)造機(jī)制的實(shí)現(xiàn)過程中,為了讓CAR構(gòu)件DLL能具備的遠(yuǎn)程的構(gòu)造能力,就需要設(shè)計(jì)接口函數(shù)幫助構(gòu)件完成初始化,構(gòu)造好的CAR構(gòu)件DLL執(zhí)行時的內(nèi)存結(jié)構(gòu)請參閱圖2所示,其中的V1指向IButtonSam的函數(shù)指針表,V2指向接口_CButtonSam_IClassObject_的函數(shù)指針表,V1和V2指針等同com中的vptr,是虛函數(shù)表指針。
其接口的繼承關(guān)系請參閱圖3所示,其中的CButtonSam是服務(wù)端需要實(shí)現(xiàn)的按鈕類。
在本發(fā)明的具體實(shí)施方式
中,CAR構(gòu)件的構(gòu)造機(jī)制的應(yīng)用范例如下 以圖形控件按鈕為例,先產(chǎn)生Car文件如下 module { typedef struct{ int x; int y; }Position,*PPosition; interface IButtonSam{ GetPosition( [out]PPosition pPos); } class CButtonSam{ constructor( [in]PPosition pos); interface IButtonSam; } } 其中的constructor([in]PPosition pos)是CButtonSam類的構(gòu)造函數(shù),CAR文件的編譯器在發(fā)現(xiàn)有構(gòu)造函數(shù)存在car文件的class中,會生成有_CButtonSam_IClassObject_接口代碼框架,它包含接口構(gòu)造方法CARAPI CreateObjectWithPos(PPosition pos,IObject**pNewObj),對應(yīng)于constructor方法 ECODE_CButtonSamClassObject_::CreateObjectWithPos( /*[in]*/PPosition pos, /*[out]*/IObject**ppNewObj) { ECODE_ecode_; CButtonSam*_pNewObj_; _ecode_=_CButtonSamCreateObject(IID_IObject,(IObject**)&_pNewObj_); if(FAILED(_ecode_))return_ecode_; _ecode_=_pNewObj_->constructor(pos); if(FAILED(_ecode_)){ _pNewObj_->Release(); return_ecode_; } *ppNewObj=(_IObject*)_pNewObj_; return NOERROR; } 其中 CARAPI_CButtonSamCreateObject(RIID riid,IObject**ppObj) { ECODE ec; CButtonSam*pObj=new CButtonSam; if(!pObj)return E_OUT_OF_MEMORY; ((_IObject*)pObj)->AddRef(); if(FAILED(ec))goto ErrorExit; ec=((_IObject*)pObj)->QueryIntefface(riid,ppObj); ErrorExit:<!-- SIPO <DP n="6"> --><dp n="d6"/> pObj->Release(); return ec; } 這樣客戶程序只要以接口方法的形式調(diào)用相應(yīng)的方法就可完成初始化,客戶端包含的對構(gòu)件的使用非常類似C++的類對象構(gòu)造,如下所示 EXTERN_C int main(int argc,char**argv) { Position pos={100,110},postmp; IButtonSam*pbs=NULL; ECODE ec=CButtonSam.New(&pos,&pbs); if(FAILED(ec)){ printf("Failed to create object with using Positon,ec=0x%08x\n",ec); goto ErrorExit; } printf("Succeed to create button with position{x=%d,y=%d}\n",pos.x,pos.y); pbs->GetPosition(&postmp); printf("Get positon:x=%d,y=%d\n",postmp.x,postmp.y); pbs->Release(); pbs=NULL; ErrorExit: if(pbs)pbs->Release(); return 0; } 其中,New函數(shù)實(shí)現(xiàn)是由系統(tǒng)根據(jù)Car文件提供的元數(shù)據(jù)生成的如下代碼來完成的 class_CButtonSamClassObject_ { public: static ECODE New( /*[in]*/PPosition pos, /*[out]*/IButtonSam**pIButtonSam) { ECODE_ecode=NOERROR; IObject*_pNewObject=NULL; _CButtonSam_IClassObject_*_p_CButtonSam_IClassObject_=NULL; _ecode=EzGetClassObject(CLSID_CButtonSamClassObject_, CTX_SAME_DOMAIN,(IObject**)&_p_CButtonSam_IClassObject_); if(FAILED(_ecode))goto Exit; _ecode=_p_CButtonSam_IClassObject_->CreateObjectWithPos(pos,&_pNewObject); if(FAILED(_ecode))goto Exit; _ecode=_pNewObject->QueryInterface(IID_IButtonSam,(IObject**)pIButtonSam); if(FAILED(_ecode))goto Exit; Exit: if(_pNewObject)_pNewObject->Release(); if(_p_CButtonSam_IClassObject_)_p_CButtonSam_IClassObject_->Release(); return_ecode; } }; 采用了上述的構(gòu)件初始化過程中的構(gòu)造方法,由于系統(tǒng)在初始化過程中根據(jù)構(gòu)件描述文件中的構(gòu)件接口元數(shù)據(jù)和特定的構(gòu)造函數(shù)信息在服務(wù)端生成包括構(gòu)造接口方法的構(gòu)造接口類代碼框架,同時在客戶端自動生成對應(yīng)的構(gòu)造調(diào)用方法,并將操作的結(jié)果作為返回值返回給用戶,從而可靠實(shí)現(xiàn)了客戶端和服務(wù)端的構(gòu)件遠(yuǎn)程構(gòu)造方式,并能夠較好的支持分布式系統(tǒng)應(yīng)用;同時將構(gòu)造結(jié)果返回用戶,便于用戶針對性的進(jìn)行處理,從而提高了開發(fā)人員的開發(fā)效率和程序的執(zhí)行效率,降低了開發(fā)難度,增強(qiáng)了程序運(yùn)行性能的穩(wěn)定性,適用范圍較為廣泛,為分布式構(gòu)件化軟件系統(tǒng)的進(jìn)一步發(fā)展奠定了堅(jiān)實(shí)的基礎(chǔ)。
在此說明書中,本發(fā)明已參照其特定的實(shí)施例作了描述。但是,很顯然仍可以作出各種修改和變換而不背離本發(fā)明的精神和范圍。因此,說明書和附圖應(yīng)被認(rèn)為是說明性的而非限制性的。
權(quán)利要求
1、一種構(gòu)件初始化過程中的構(gòu)造方法,包括通過計(jì)算機(jī)網(wǎng)絡(luò)相連接的服務(wù)端和客戶端,其特征在于,所述的方法包括以下步驟
(1)系統(tǒng)進(jìn)行初始化操作;
(2)系統(tǒng)根據(jù)用戶操作,在構(gòu)件描述文件中添加構(gòu)件接口描述信息和特定的構(gòu)造函數(shù);
(3)系統(tǒng)讀取該構(gòu)件描述文件,產(chǎn)生接口元數(shù)據(jù),并根據(jù)該特定的構(gòu)造函數(shù)在服務(wù)端生成包括構(gòu)造接口方法的構(gòu)造接口類代碼框架;
(4)系統(tǒng)得到元數(shù)據(jù),并根據(jù)該元數(shù)據(jù)在客戶端生成構(gòu)造調(diào)用方法;
(5)系統(tǒng)根據(jù)用戶調(diào)用和元數(shù)據(jù)信息,在客戶端產(chǎn)生構(gòu)件類廠對象;
(6)系統(tǒng)在服務(wù)端查詢相應(yīng)的構(gòu)造接口類;
(7)系統(tǒng)根據(jù)查詢到的構(gòu)造接口類調(diào)用相應(yīng)的構(gòu)造接口方法,并將操作結(jié)果作為返回值返回,從而完成構(gòu)件的初始化構(gòu)造。
2、根據(jù)權(quán)利要求1所述的構(gòu)件初始化過程中的構(gòu)造方法,其特征在于,所述的特定的構(gòu)造函數(shù)的格式為構(gòu)造函數(shù)標(biāo)識([輸入]輸入?yún)?shù))。
3、根據(jù)權(quán)利要求1所述的構(gòu)件初始化過程中的構(gòu)造方法,其特征在于,所述的構(gòu)造函數(shù)標(biāo)識為constructor。
4、根據(jù)權(quán)利要求2所述的構(gòu)件初始化過程中的構(gòu)造方法,其特征在于,所述的在服務(wù)端生成包括構(gòu)造接口方法的構(gòu)造接口類代碼框架包括以下步驟
(1)在服務(wù)端生成構(gòu)造接口類的代碼;
(2)根據(jù)所述的特定的構(gòu)造函數(shù)生成該構(gòu)造接口類的構(gòu)造接口方法,該構(gòu)造接口方法的格式為錯誤代碼接口方法標(biāo)識(輸入?yún)?shù),構(gòu)件指針),其中錯誤代碼為該構(gòu)造接口方法的返回值;
(3)在該構(gòu)造接口方法的執(zhí)行過程中進(jìn)行產(chǎn)生該構(gòu)件對象并進(jìn)行初始化的操作,并將構(gòu)件產(chǎn)生和初始化操作的錯誤代碼作為返回值返回。
5、根據(jù)權(quán)利要求2至4中任一項(xiàng)所述的構(gòu)件初始化過程中的構(gòu)造方法,其特征在于,所述的在客戶端生成構(gòu)造調(diào)用方法包括以下步驟
(1)在客戶端根據(jù)構(gòu)件接口元數(shù)據(jù),產(chǎn)生特定的構(gòu)造函數(shù)和構(gòu)件接口構(gòu)造調(diào)用方法,該構(gòu)造調(diào)用方法的格式為錯誤代碼構(gòu)造方法標(biāo)識(輸入?yún)?shù),構(gòu)件指針),其中錯誤代碼為該構(gòu)造調(diào)用方法的返回值;
(2)在該構(gòu)造調(diào)用方法的執(zhí)行過程中進(jìn)行產(chǎn)生構(gòu)件類廠對象、在服務(wù)端查詢相應(yīng)的構(gòu)造接口類、根據(jù)該構(gòu)造接口類調(diào)用相應(yīng)的構(gòu)造接口方法以完成產(chǎn)生構(gòu)件和初始化構(gòu)造的操作,并將上述操作的錯誤代碼作為返回值返回。
6、根據(jù)權(quán)利要求5所述的構(gòu)件初始化過程中的構(gòu)造方法,其特征在于,所述的構(gòu)造方法標(biāo)識為New。
全文摘要
本發(fā)明涉及一種構(gòu)件初始化過程中的構(gòu)造方法,包括在構(gòu)件描述文件中添加構(gòu)件接口元數(shù)據(jù)和特定的構(gòu)造函數(shù)、根據(jù)特定的構(gòu)造函數(shù)在服務(wù)端生成包括構(gòu)造接口方法的構(gòu)造接口類代碼框架、根據(jù)所述的構(gòu)件接口元數(shù)據(jù)在客戶端生成構(gòu)造調(diào)用方法、在客戶端產(chǎn)生構(gòu)件對象類廠、在服務(wù)端查詢相應(yīng)的構(gòu)造接口類、根據(jù)查詢到的構(gòu)造接口類調(diào)用相應(yīng)的構(gòu)造接口方法并將操作結(jié)果作為返回值返回。采用該種構(gòu)件初始化過程中的構(gòu)造方法,可靠實(shí)現(xiàn)了構(gòu)件遠(yuǎn)程構(gòu)造方式,并能夠較好的支持分布式系統(tǒng)應(yīng)用,提高了開發(fā)人員的開發(fā)效率和程序的執(zhí)行效率,降低了開發(fā)難度,增強(qiáng)了程序運(yùn)行性能的穩(wěn)定性,適用范圍較為廣泛,為分布式構(gòu)件化軟件系統(tǒng)的進(jìn)一步發(fā)展奠定了堅(jiān)實(shí)的基礎(chǔ)。
文檔編號G06F9/44GK1904825SQ20061002975
公開日2007年1月31日 申請日期2006年8月4日 優(yōu)先權(quán)日2006年8月4日
發(fā)明者陳榕, 梁宇洲, 黃凱峰, 文立 申請人:上??铺┦兰o(jì)科技有限公司