論軟件的組件式開(kāi)發(fā)

字號(hào):

2000年10月我開(kāi)始擔(dān)任四川某網(wǎng)絡(luò)公司移動(dòng)短消息增值應(yīng)用系統(tǒng)(簡(jiǎn)稱SMASP)開(kāi)發(fā)部的負(fù)責(zé)人,主要工作是對(duì)SMASP進(jìn)行規(guī)劃并實(shí)施開(kāi)發(fā),為總經(jīng)理提供SMASP開(kāi)發(fā)的參考方案。SMASP的通信服務(wù)提供商為中國(guó)聯(lián)通公司,服務(wù)內(nèi)容提供商為如:出租車調(diào)度系統(tǒng)的出租車管理公司;電碼防偽系統(tǒng)的商用電碼公司;水電氣三表抄表系統(tǒng)的水電氣公司;移動(dòng)證券系統(tǒng)的證券公司等,還有許多已知的和未知的對(duì)移動(dòng)短消息增值應(yīng)用有潛在需求的應(yīng)用領(lǐng)域會(huì)不段地加入到SMASP中來(lái)。SMASP首期工程應(yīng)用到聯(lián)通四川公司,二期工程將推廣到山東、河南、廣東、福建、湖北等省市,并逐步推廣應(yīng)用到全國(guó)聯(lián)通。由于項(xiàng)目處于起步階段,還沒(méi)有定型的系統(tǒng)模型及成功的應(yīng)用模式,因此,選擇一個(gè)好的系統(tǒng)體系結(jié)構(gòu)和開(kāi)發(fā)模式就成為當(dāng)務(wù)之急。
    對(duì)領(lǐng)域的選擇。通常一個(gè)領(lǐng)域的專用資產(chǎn)要應(yīng)用到不相關(guān)的領(lǐng)域是比較困難的,組件式開(kāi)發(fā)的首要工作是領(lǐng)域工程,在這個(gè)領(lǐng)域內(nèi)提取可被復(fù)用的系統(tǒng)對(duì)象,創(chuàng)建可復(fù)用資產(chǎn),開(kāi)發(fā)復(fù)用組件。而SMASP正好是這樣一個(gè)面對(duì)具體應(yīng)用領(lǐng)域的,系統(tǒng)需要不斷升級(jí),有著長(zhǎng)期的持續(xù)開(kāi)發(fā)需求。因此,在SMASP建設(shè)的初級(jí)階段,為SMASP創(chuàng)建復(fù)用資產(chǎn)是可行的,有回報(bào)的。
    對(duì)組件(COM)式體系結(jié)構(gòu)的選擇。SMASP已經(jīng)有一部分應(yīng)用是建立在Windows/NT服務(wù)器上了,但考慮到本系統(tǒng)將推廣到全國(guó)各地聯(lián)通公司,將來(lái)的遠(yuǎn)程系統(tǒng)維護(hù)和遠(yuǎn)程操作控制以及系統(tǒng)整體性能的需要,我建議公司將系統(tǒng)后臺(tái)應(yīng)用部分移植到以SUN系統(tǒng)為主的UNIX系統(tǒng)上來(lái),這一建議得到了公司的支持。我們的服務(wù)內(nèi)容提供商是各式各樣的,處在不同的行業(yè),有不同的應(yīng)用系統(tǒng)在運(yùn)行,對(duì)UNIX、WINDOWS、WINDOWS/NT、LINUX、NETWARE等都有應(yīng)用,是一個(gè)多平臺(tái)系統(tǒng)。為對(duì)這樣一個(gè)多平臺(tái)、多應(yīng)用、長(zhǎng)期持續(xù)開(kāi)發(fā)的系統(tǒng)選擇一個(gè)良好的體系結(jié)構(gòu)和開(kāi)發(fā)方式,將決定在將來(lái)的開(kāi)發(fā)實(shí)踐中SMASP的質(zhì)量、連續(xù)可用性、可升級(jí)維護(hù)性、可擴(kuò)展性、開(kāi)發(fā)工作量和投資等各項(xiàng)指標(biāo)。經(jīng)過(guò)反復(fù)考慮,我們將整個(gè)系統(tǒng)劃分為各個(gè)獨(dú)立的組成對(duì)象,各對(duì)象獨(dú)立工作又相互協(xié)調(diào)來(lái)完成系統(tǒng)的功能,這樣各個(gè)獨(dú)立的對(duì)象就形成了系統(tǒng)的組件。在這些組件中,有些是SMASP內(nèi)通用的,其功能定義在系統(tǒng)內(nèi)長(zhǎng)期穩(wěn)定;也有面對(duì)不同ASP(服務(wù)內(nèi)容提供商)的各式各樣的組件。這些組件的開(kāi)發(fā)工作均相對(duì)獨(dú)立,互不干擾,因此可以實(shí)現(xiàn)系統(tǒng)的無(wú)代演進(jìn)。
    創(chuàng)建復(fù)用資產(chǎn)和復(fù)用組件。通??梢员粡?fù)用的資產(chǎn)是在領(lǐng)域內(nèi)通用性比較好的對(duì)象。通過(guò)深入的分析,我們決定建立短消息增值應(yīng)用系統(tǒng)平臺(tái)MIS Platform。MIS Platform本身是由多個(gè)組件構(gòu)成的多層次的、組件化的體系結(jié)構(gòu),在他上面運(yùn)行的ASP的各種應(yīng)用也可看作MIS Platform的各個(gè)組件。MIS Platform的體系結(jié)構(gòu),各組件的詳細(xì)定義,接口定義,?;?guī)范,大量代碼以及各部分的文檔都是潛在的可復(fù)用資產(chǎn)。復(fù)用資產(chǎn)和復(fù)用組件之間有一定區(qū)別,復(fù)用資產(chǎn)的范圍相對(duì)廣泛,而復(fù)用組件則更為具體,通常指可以直接嵌入到目標(biāo)系統(tǒng)內(nèi)或獨(dú)立運(yùn)行以完成某一特定功能的程序模塊或?qū)ο?。并不是所有可?fù)用資產(chǎn)都可以制作成復(fù)用組件的,在劃定了復(fù)用資產(chǎn)后還要進(jìn)一步提煉,如我們?cè)贛IS Platform中創(chuàng)建的基本表管理組件、索引管理組件、TCP/IP通信組件、接口組件、加密組件等,都具有很好的通用性。
    通用接口的定義。在組件式開(kāi)發(fā)中,由于系統(tǒng)是依靠預(yù)制的或獨(dú)立運(yùn)行的組件協(xié)同工作來(lái)達(dá)到系統(tǒng)功能目標(biāo),各組件之間對(duì)信息的交換就成為必然,而要使各組件之間順利交換信息,就需要定義一個(gè)各組件都能解析的通信接口。在我們的系統(tǒng)中SORBA(短消息對(duì)象請(qǐng)求代理結(jié)構(gòu))承擔(dān)了這個(gè)角色,他的定義能為MIS Platform中所有組件識(shí)別和解析,成為組件協(xié)同工作的紐帶。SORBA的定義要考慮到獨(dú)立于平臺(tái)、獨(dú)立于操作系統(tǒng)、獨(dú)立于編譯系統(tǒng)、獨(dú)立于開(kāi)發(fā)工具,因?yàn)樵谶@個(gè)應(yīng)用范圍廣大的多平臺(tái)、長(zhǎng)期持續(xù)開(kāi)發(fā)的應(yīng)用系統(tǒng)中,我們無(wú)法保證大家都使用相同的開(kāi)發(fā)工具,即使開(kāi)發(fā)工具相同,也不可能保證通信的數(shù)據(jù)結(jié)構(gòu)絕對(duì)不發(fā)生改變,因此SORBA的定義的獨(dú)立性和靈活性就相當(dāng)重要。
    在各種平臺(tái)下實(shí)現(xiàn)組件。由于我們的系統(tǒng)是多平臺(tái)的,所以復(fù)用組件也需要在多平臺(tái)下實(shí)現(xiàn)。而目前大家討論得多的如COM、CORBA、ActiveX等是以WINDOWS為平臺(tái)的,WINDOWS能夠提供給組件的實(shí)現(xiàn)方式為DLL或OLE技術(shù)。而我認(rèn)為,這個(gè)理解是狹隘的,組件可以以多種方式在多種平臺(tái)下實(shí)現(xiàn)。在WINDOWS系統(tǒng)上除了DLL和OLE外,還可以使用靜態(tài)連接、消息隊(duì)列等方式來(lái)實(shí)現(xiàn);在UNIX上可以采用靜態(tài)連接、消息隊(duì)列、共享內(nèi)存等技術(shù)來(lái)實(shí)現(xiàn)。可以看出,在UNIX和WINDOWS(2000以上版本)上均提供了消息隊(duì)列。MIS Platform中獨(dú)立運(yùn)行的組件是通過(guò)消息隊(duì)列聯(lián)系起來(lái)的,在UNIX和WINDOWS下均采用這個(gè)機(jī)制,如加密組件和通信組件之間、短消息處理中心和通信組件之間、通信組件和ASP應(yīng)用組件之間均通過(guò)消息隊(duì)列通信。而嵌入式組件如基本表、索引、SORBA接口協(xié)議等組件在UNIX下的實(shí)現(xiàn)采用的是靜態(tài)連接技術(shù),在WINDOWS下采用靜態(tài)連接和DLL兩種技術(shù)。不管是嵌入組件還是獨(dú)立運(yùn)行的組件,在實(shí)現(xiàn)的時(shí)候都應(yīng)當(dāng)考慮多平臺(tái)的需求,組件要獨(dú)立于開(kāi)發(fā)工具、具有高度的可塑性、接口清晰可靠。