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