張毅
摘要:論文結(jié)合多年碼頭實(shí)際研發(fā)實(shí)施現(xiàn)狀,設(shè)計(jì)出可適應(yīng)多種碼頭類(lèi)型的架構(gòu),抽象出多個(gè)可復(fù)用的公用組件,并從業(yè)務(wù)層面總結(jié)出一批同時(shí)適應(yīng)多種碼頭業(yè)務(wù)的可配置內(nèi)容,大大減少了新碼頭的開(kāi)發(fā)成本以及后期實(shí)施的成本,為集裝箱碼頭操作系統(tǒng)產(chǎn)品化道路邁出了堅(jiān)實(shí)的一步。
關(guān)鍵詞:集裝箱碼頭操作系統(tǒng);產(chǎn)品化;研發(fā);實(shí)施
中圖分類(lèi)號(hào):U169.6文獻(xiàn)標(biāo)識(shí)碼:A
本研究課題計(jì)劃以招商局青島碼頭CTOS研發(fā)實(shí)施項(xiàng)目為依托,在CTOS產(chǎn)品研發(fā)中植入產(chǎn)品化的理念,第一步實(shí)現(xiàn)主要部件組件化,利用積累起來(lái)的業(yè)務(wù)經(jīng)驗(yàn)逐步增加模塊復(fù)用的程度,研發(fā)出具有自主知識(shí)產(chǎn)權(quán)的,在技術(shù)架構(gòu)以及開(kāi)發(fā)工具上具有一定先進(jìn)性并且可以滿足碼頭營(yíng)運(yùn)的,世界一流的集裝箱碼頭操作系統(tǒng);然后以此為基礎(chǔ)搭建符合國(guó)內(nèi)外集裝箱碼頭操作習(xí)慣,業(yè)界領(lǐng)先的集裝箱碼頭操作開(kāi)發(fā)平臺(tái),增加CTOS的競(jìng)爭(zhēng)能力。
1集裝箱碼頭操作管理系統(tǒng)國(guó)內(nèi)現(xiàn)狀
TOS系統(tǒng),俗稱(chēng)集裝箱碼頭操作系統(tǒng),在集裝箱碼頭的軟性指標(biāo)中處于核心地位;國(guó)外的TOS系統(tǒng)發(fā)展多年,依靠早年積累起來(lái)的技術(shù)和眾多的客戶為業(yè)務(wù)背景,已經(jīng)開(kāi)發(fā)出很成熟的產(chǎn)品,可以適應(yīng)大型集裝箱碼頭的操作管理需要;但是另一方面也存在費(fèi)用高,維護(hù)周期長(zhǎng),本地化差異及核心技術(shù)受制于他人的問(wèn)題;國(guó)內(nèi)的TOS系統(tǒng)起步較晚,產(chǎn)品較不成熟,所以國(guó)內(nèi)大型集裝箱碼頭使用的基本上是國(guó)外的產(chǎn)品,比如招商局旗下的蛇口集裝箱碼頭使用美國(guó)的Navis,赤灣集裝箱碼頭使用的是比利時(shí)的Cosmos產(chǎn)品;而此兩大碼頭占了整個(gè)深圳集裝箱碼頭的約一半箱量。
目前市面上各大碼頭用的TOS系統(tǒng)產(chǎn)品主要來(lái)源于國(guó)外的Navis、Cosmos、TSB等大的廠商;而國(guó)內(nèi)較大的TOS系統(tǒng)研發(fā)企業(yè)有上海海勃、華東電子等主要公司,競(jìng)爭(zhēng)相當(dāng)強(qiáng)。招商局國(guó)際作為招商局旗下的優(yōu)質(zhì)公司,TOS系統(tǒng)作為企業(yè)的軟性核心競(jìng)爭(zhēng)力,不論從國(guó)家重點(diǎn)發(fā)展自主創(chuàng)新的理念,還是市場(chǎng)化的需要,對(duì)自身的TOS系統(tǒng)的研發(fā)提出了更高的要求,產(chǎn)品化道路勢(shì)在必行。2003年至今,招商局集裝箱碼頭操作管理系統(tǒng)(下稱(chēng)CTOS)已經(jīng)在旗下5個(gè)中小碼頭成功實(shí)施,多年來(lái)積累了豐富的研發(fā)實(shí)施經(jīng)驗(yàn),CTOS系統(tǒng)從1.0版本也發(fā)展到了3.0版本,但是隨著碼頭業(yè)務(wù)的不斷發(fā)展,原有項(xiàng)目化發(fā)展的CTOS系統(tǒng)逐步暴露出諸如單證等子系統(tǒng)之間的數(shù)據(jù)交換復(fù)雜、系統(tǒng)整體性能較低、后期擴(kuò)展性弱、維護(hù)成本高等問(wèn)題;所以盡快使CTOS系統(tǒng)產(chǎn)品化迫在眉睫。
2重點(diǎn)解決以下幾個(gè)問(wèn)題
(1)VC++的客戶端程序如何高效的調(diào)用基于IIS的.NET中間層服務(wù)。
(2)如何設(shè)計(jì)和抽取出一套基于Windows平臺(tái)的核心通用組件,增加復(fù)用率并且降低將來(lái)實(shí)施新碼頭TOS系統(tǒng)的研發(fā)實(shí)施成本。
(3)無(wú)線終端2.4G技術(shù)如何與目前大量使用的400M技術(shù)相結(jié)合。
(4)根據(jù)碼頭業(yè)務(wù)的差異和維護(hù)實(shí)施需要如何設(shè)計(jì)出通用配置化的架構(gòu)。
3具體設(shè)計(jì)方案
(1)VC++開(kāi)發(fā)的非托管客戶端如何調(diào)用基于IIS的.NET服務(wù)
在.NET應(yīng)用3層架構(gòu)應(yīng)用程序中,中間層應(yīng)用服務(wù)器可使用.net remoting或WebService實(shí)現(xiàn),兩種技術(shù)的主要特點(diǎn)如下:
a)WebService:語(yǔ)言獨(dú)立,平臺(tái)獨(dú)立,穿透防火墻,適合Internet場(chǎng)景應(yīng)用;性能比TCP+Binary形式的Remoting慢;和host在IIS上的HTTP+Binary形式的Remoting性能基本相當(dāng);比host在IIS上的HTTP+SOAP形式的Remoting性能高;必須host在WebServer上;面向接口實(shí)現(xiàn),適用于傳遞簡(jiǎn)單數(shù)據(jù)類(lèi)型或系統(tǒng)內(nèi)置對(duì)象,不太適合傳遞復(fù)雜對(duì)象;遠(yuǎn)程對(duì)象生命周期:只支持SingleCall模式。
b)Remoting:客戶端局限于.net framework;跨應(yīng)用程序域的.net component;支持Binary or SOAP格式;支持TCP,HTTP,自定義通信協(xié)議;WebServer不是必須的,可host在其它自定義應(yīng)用程序;TCP通道下的remoting性能比WebService性能高;完全的面向?qū)ο髮?shí)現(xiàn);遠(yuǎn)程對(duì)象生命周期:支持SingleCall、Singleton、CAO三種方式。
在本系統(tǒng)中間層技術(shù)選型中,性能是第一位的考慮因素。TCP通道和二進(jìn)制格式下的Remoting比WebService性能高是很明確的,但使用TCP通道一般需要另行開(kāi)發(fā)一個(gè)Windows Service程序作為Remoting應(yīng)用的host程序,這種方式主要的問(wèn)題是比較難實(shí)現(xiàn)系統(tǒng)的負(fù)載均衡,且增加了系統(tǒng)的復(fù)雜度和增加了工作量。基于負(fù)載均衡的考慮,在本系統(tǒng)中,不考慮使用TCP通道的Remoting技術(shù)實(shí)現(xiàn)。
由于排除了使用TCP通道的Remoting,所以在系統(tǒng)性能比較上就只考慮IIS上的Remoting和WebService,通過(guò)參考微軟對(duì)兩種技術(shù)的性能對(duì)比測(cè)試報(bào)告,并進(jìn)行實(shí)際的性能對(duì)比測(cè)試,對(duì)比性能測(cè)試的結(jié)果與微軟的測(cè)試報(bào)告結(jié)果一致:WebService比HTTP+SOAP方式的Remoting性能高;WebService與HTTP+Binary方式的Remoting性能基本相當(dāng),多數(shù)情況下WebService的性能稍高一些。
通過(guò)性能對(duì)比測(cè)試,顯示W(wǎng)ebService和Host在IIS上的Remoting在性能上基本沒(méi)有差別,另外的重要的考慮因素是對(duì)VC++應(yīng)用的支持。在TOS系統(tǒng)中,前臺(tái)應(yīng)用程序采用VC++語(yǔ)言開(kāi)發(fā),前臺(tái)程序具有復(fù)雜的圖形處理,暫時(shí)不準(zhǔn)備將這部分程序移植到.NET平臺(tái)實(shí)現(xiàn)。這種情況下如果中間層應(yīng)用服務(wù)器使用Remoting技術(shù)實(shí)現(xiàn),則前臺(tái)程序必須完全用.NET技術(shù)重寫(xiě);而如果中間層應(yīng)用服務(wù)器使用WebService技術(shù)實(shí)現(xiàn),則前臺(tái)應(yīng)用程序可仍然使用VC++開(kāi)發(fā),這可以大大減少開(kāi)發(fā)工作量,降低項(xiàng)目風(fēng)險(xiǎn)。
結(jié)論
經(jīng)過(guò)對(duì)比Remoting和WebService技術(shù)的處理性能和適用場(chǎng)景,認(rèn)為WebService技術(shù)更適合在本系統(tǒng)中,所以在本系統(tǒng)中決定采用WebService技術(shù)實(shí)現(xiàn)中間層應(yīng)用服務(wù)器。
(2)如何設(shè)計(jì)和抽取出一套基于Windows平臺(tái)的核心通用組件,增加復(fù)用率并且降低將來(lái)實(shí)施新碼頭TOS系統(tǒng)的研發(fā)實(shí)施成本
系統(tǒng)計(jì)劃采取的架構(gòu)基于COM組件,采用二進(jìn)制方式進(jìn)行共享,而不是傳統(tǒng)的代碼級(jí)重用,能夠降低系統(tǒng)的耦合型,更好的對(duì)并行開(kāi)發(fā)方式的支持。SDK與ATL+WTL的結(jié)合,即可以減少對(duì)MFC的依賴,又可以利用成熟的ATL+WTL的模板類(lèi)來(lái)進(jìn)行快速的開(kāi)發(fā),在WTL中已經(jīng)有很好的對(duì)窗口類(lèi)的封裝,很好的對(duì)ATL進(jìn)行了補(bǔ)充。ATL和WTL對(duì)用戶來(lái)說(shuō)都是開(kāi)源的,在調(diào)試跟蹤方面或者問(wèn)題排查上,會(huì)有很大的幫助。
基于上述原因,整體圖形化系統(tǒng)采取COM組件搭建,設(shè)計(jì)思想如下:系統(tǒng)框架不緩存任何數(shù)據(jù),COM實(shí)體緩存顯示和操作必需的數(shù)據(jù)。所有COM組件的數(shù)據(jù)交換采用標(biāo)準(zhǔn)的XML結(jié)構(gòu)處理,可跨開(kāi)發(fā)語(yǔ)言平臺(tái)使用(基于Windows)。根據(jù)實(shí)際情況,計(jì)劃對(duì)部分通用以及可能通用的模塊采取標(biāo)準(zhǔn)化的組件設(shè)計(jì),進(jìn)行COM抽象改造之后,可被其它模塊或者開(kāi)發(fā)語(yǔ)言調(diào)用使用,降低了開(kāi)發(fā)成本。
1)船側(cè)視圖。2)船瀏覽圖。3)船貝圖。4)船柱狀圖。5)堆場(chǎng)外觀圖。6)堆場(chǎng)鳥(niǎo)瞰圖。7)堆場(chǎng)貝位圖。8)堆場(chǎng)欄圖。9)泊位計(jì)劃。10)統(tǒng)計(jì)表。
(3)無(wú)線終端2.4G技術(shù)如何與目前大量使用的400M技術(shù)相結(jié)合
關(guān)于碼頭無(wú)線終端的使用,目前存在兩種帶寬的技術(shù):400MHz和2.4GHz;這兩種技術(shù)模式各有優(yōu)缺點(diǎn),說(shuō)明如下(灰色底色表示優(yōu)點(diǎn)):
從上表可以看出,400MHz的目前需要繼續(xù)使用的理由是由于歷史原因以及成本考慮,長(zhǎng)期來(lái)看會(huì)逐步被2.4GHz所替代;但是400MHz的會(huì)繼續(xù)存在2~3年或更久。所以,在設(shè)計(jì)上我們必須考慮將兩者在系統(tǒng)級(jí)別不作區(qū)分。統(tǒng)一設(shè)計(jì)維護(hù)。
基于以上考慮,無(wú)線終端服務(wù)設(shè)計(jì)思路如下:
1)無(wú)線終端服務(wù)端只關(guān)注界面邏輯,業(yè)務(wù)邏輯放到IIS的中間層進(jìn)行處理。
2)2.4GHz的終端和400MHz的終端統(tǒng)一通過(guò)封裝的無(wú)線終端服務(wù)進(jìn)行中間層的訪問(wèn),終端不直接訪問(wèn)中間層。
3)由于400MHz的界面顯示處理只能在無(wú)線終端服務(wù)端進(jìn)行;故在無(wú)線終端服務(wù)端的設(shè)計(jì)內(nèi)單獨(dú)加入400MHz的界面處理類(lèi),其余的類(lèi)不再區(qū)分2.4GHz或者400MHz,進(jìn)行統(tǒng)一處理。2.4GHz的客戶端處理當(dāng)作Windows客戶端處理,不需服務(wù)端介入。
(4)根據(jù)碼頭業(yè)務(wù)的差異和維護(hù)實(shí)施需要如何設(shè)計(jì)出通用配置化的架構(gòu)
為提高圖形化系統(tǒng)的產(chǎn)品化程度(主要包含船舶管理和堆場(chǎng)管理兩大模塊),減少新碼頭的開(kāi)發(fā)成本以及后期實(shí)施的成本,需要對(duì)各個(gè)碼頭對(duì)于碼頭圖形化系統(tǒng)的需求進(jìn)行抽象并且進(jìn)行配置化處理,主要分為以下兩類(lèi)的配置化:
1)界面元素配置化
在VC++的實(shí)現(xiàn)框架下,采用的XML來(lái)進(jìn)行UI配置,目標(biāo)是將目前存在的每個(gè)碼頭一套代碼合并成統(tǒng)一的一套編譯代碼,而最終的目的則是要將前臺(tái)軟件產(chǎn)品化。因此,在UI部分進(jìn)行合并時(shí),則要求不是簡(jiǎn)單的將所有代碼能合并到一個(gè)編輯框架下,而是消除現(xiàn)有軟件實(shí)施過(guò)程中碼頭化的概念,將所有的功能都合并起來(lái),形成一個(gè)功能全集;通過(guò)配置,選擇不同的功能模塊,以滿足不同碼頭的業(yè)務(wù)需求。
①以XML文件來(lái)描述UI組件的位置,控件類(lèi)型,以及所對(duì)應(yīng)的事件。
②提供一個(gè)模板基類(lèi),對(duì)XML中的UI元素統(tǒng)一的消息處理,將所有的事件依據(jù)XML中配置的函數(shù)名進(jìn)行事件分發(fā)。
③對(duì)于需要定制化的UI界面,繼承框架提供的模板基類(lèi),并注冊(cè)事件處理函數(shù)后,通過(guò)裝載UI XML來(lái)達(dá)到界面功能配置化的目的。
2)業(yè)務(wù)流程的配置化
業(yè)務(wù)規(guī)則定制由3部分組成:框架、XML配置文件、業(yè)務(wù)規(guī)則定義。
1)業(yè)務(wù)規(guī)則管理實(shí)現(xiàn)了ITOSRuleManage接口,該部分由系統(tǒng)框架實(shí)現(xiàn),提供如下功能:提供業(yè)務(wù)規(guī)則的管理;提供數(shù)據(jù)參數(shù)的傳遞;根據(jù)業(yè)務(wù)流程編號(hào)按順序執(zhí)行配置文件中使用到的業(yè)務(wù)規(guī)則;可獲取業(yè)務(wù)規(guī)則返回的信息。
2)通過(guò)XML配置文件來(lái)定義業(yè)務(wù)流程中使用到的校驗(yàn)項(xiàng),分兩部分:業(yè)務(wù)規(guī)則集合定義和業(yè)務(wù)流程中使用的規(guī)則:業(yè)務(wù)規(guī)則定義包含:規(guī)則ID、組件CLSID、函數(shù)名稱(chēng);業(yè)務(wù)流程包含:業(yè)務(wù)流程編號(hào)、使用規(guī)則、規(guī)則對(duì)應(yīng)附加參數(shù)的描述。
3)業(yè)務(wù)規(guī)則定義,即通過(guò)輸入的數(shù)據(jù),來(lái)判斷是否符合規(guī)則。
4預(yù)期效果
(1)業(yè)務(wù)邏輯層采用了標(biāo)準(zhǔn)WebService方法構(gòu)建,適應(yīng)各種不同的客戶端(含C/S,B/S)調(diào)用,無(wú)需過(guò)多考慮開(kāi)發(fā)語(yǔ)言和模式,只要能調(diào)用標(biāo)準(zhǔn)WebService都可以。
(2)抽象了10個(gè)以上的圖形化組件,此部分內(nèi)容可適應(yīng)目前所知的絕大部分碼頭的需要,不需要再進(jìn)行開(kāi)發(fā)。大大減少了圖形化系統(tǒng)的研發(fā)和實(shí)施時(shí)間。
(3)技術(shù)和業(yè)務(wù)上整合了無(wú)線終端目前的主流頻點(diǎn)400MHz和2.4GHz開(kāi)發(fā),可以適應(yīng)所有碼頭的無(wú)線終端的需求;實(shí)施過(guò)程中只需要根據(jù)各碼頭實(shí)際業(yè)務(wù)進(jìn)行業(yè)務(wù)處理調(diào)整即可,無(wú)需對(duì)技術(shù)架構(gòu)進(jìn)行改變。
(4)由于根據(jù)已實(shí)施碼頭的實(shí)際經(jīng)驗(yàn)以及業(yè)界其他碼頭的可能預(yù)期在圖形化系統(tǒng)進(jìn)行了可配置項(xiàng)的設(shè)置,此部分內(nèi)容可適應(yīng)絕大部分碼頭的需要,只需要根據(jù)新碼頭的實(shí)際情況進(jìn)行配置即可,不需要再進(jìn)行開(kāi)發(fā),大大減少了圖形化系統(tǒng)的研發(fā)和實(shí)施時(shí)間。
參考文獻(xiàn):
[1] 張莉. D港集裝箱碼頭堆場(chǎng)系統(tǒng)業(yè)務(wù)流程現(xiàn)狀、問(wèn)題及對(duì)策[J]. 物流技術(shù),2009,28(1):44.
[2] 馬健麗. 基于400M無(wú)線網(wǎng)絡(luò)的中小型集裝箱碼頭無(wú)線作業(yè)調(diào)度系統(tǒng)[J]. 中國(guó)科技信息,2010(12):130.
[3] 徐繼成,曲國(guó)臣. 集裝箱碼頭操作系統(tǒng)解決方案研究[J]. 水運(yùn)科學(xué)研究,2006(3):35.
[4] 彭傳圣. 集裝箱碼頭經(jīng)營(yíng)與技術(shù)信息[J]. 水運(yùn)科學(xué)研究,2007(1):58.
[5] 蘇波,歐陽(yáng)仁堂. 深圳港口物流現(xiàn)狀與發(fā)展對(duì)策[J]. 集裝箱化,2005(2):31.
[6] 朱靜霞. 中國(guó)港口集裝箱碼頭信息技術(shù)應(yīng)用現(xiàn)狀與展望[J]. 中國(guó)遠(yuǎn)洋航務(wù),2006(8):58.