周文平(上海海事大學(xué),上海 201306)
我國現(xiàn)代物流整體規(guī)模擴大,發(fā)展速度加快,運行效率提高,對經(jīng)濟發(fā)展的支撐和促進作用更加明顯[1]。同時,據(jù)統(tǒng)計,國際航運業(yè)承擔(dān)著國際貨物貿(mào)易90%以上的運輸量[2],隨著經(jīng)濟全球化的快速發(fā)展,航運在全球化的貿(mào)易運輸中的地位就顯得尤為突出,航運物流信息的管理更顯重要[3]。
信息技術(shù)和信息系統(tǒng)蓬勃發(fā)展,給物流企業(yè)業(yè)務(wù)流程、管理模式、組織機構(gòu)的重組乃至整體的發(fā)展帶來新的機會,促使傳統(tǒng)的經(jīng)營方式和思想觀念發(fā)生深刻的變革,也對物流企業(yè)的經(jīng)營理念和管理模式提出了挑戰(zhàn)。我國的航運物流企業(yè)如果要實現(xiàn)適應(yīng)未來日益激烈的市場競爭,最有效的方法就是通過開發(fā)管理信息系統(tǒng)來加強企業(yè)各個部門之間的相互協(xié)作,以提高企業(yè)的整體運作水平[4]。由此可見,航運物流企業(yè)構(gòu)建管理信息平臺已是大勢所趨。
現(xiàn)有航運物流管理信息系統(tǒng)的開發(fā)模式下,IT組織很難對不同的功能和系統(tǒng)進行集成,很難對變化的商務(wù)需求和競爭需求及時做出反應(yīng)。只要不是由單獨的一個開發(fā)商來提供所有的功能,就一定存在著不嚴(yán)格的應(yīng)用程序。本文提出了一種經(jīng)改進后適應(yīng)于.NET平臺的J2EE平臺的成熟、穩(wěn)定、易維護的五層架構(gòu)開發(fā)模式,同時考慮到系統(tǒng)將來的重用和擴展問題,將面向接口編程思想運用于此架構(gòu)對系統(tǒng)進行開發(fā)和實現(xiàn)。這些接口在開發(fā)之初就已經(jīng)考慮到重用問題,提供了標(biāo)準(zhǔn)的接口,可以被各種應(yīng)用和其它服務(wù)所調(diào)用。
定義:在系統(tǒng)分析和架構(gòu)中,分清層次和依賴關(guān)系,每個層次不是直接向其上層提供服務(wù)(即不是直接實例化在上層中),而是通過定義一組接口,僅向上層暴露其接口功能,上層對于下層僅僅是接口依賴,而不依賴具體類。
(1)接口編程和面向?qū)ο缶幊淌鞘裁搓P(guān)系
面向接口編程和面向?qū)ο缶幊滩⒉皇瞧郊壍?,它并不是比面向?qū)ο缶幊谈冗M的一種獨立的編程思想,而是附屬面向?qū)ο笏枷塍w系,屬于其一部分。
(2)面向接口編程優(yōu)勢
這樣做的好處是顯而易見的,首先對系統(tǒng)靈活性大有好處。當(dāng)下層需要改變時,只要接口及接口功能不變,則上層不用做任何修改。使用接口的另一個好處就是不同部件或?qū)哟蔚拈_發(fā)人員可以并行開工,就像造硬盤的不用等造CPU的,也不用等造顯示器的,只要接口一致,設(shè)計合理,完全可以并行進行開發(fā),從而提高效率。
在.NET平臺上,比較經(jīng)典的分層架構(gòu)是三層架構(gòu),從下到上依次是:數(shù)據(jù)訪問層、業(yè)務(wù)邏輯層、表示層。各層職責(zé)如下:
數(shù)據(jù)訪問層:負(fù)責(zé)與數(shù)據(jù)源交互,完成數(shù)據(jù)訪問等一系列操作。
業(yè)務(wù)邏輯層:完成與系統(tǒng)業(yè)務(wù)有關(guān)的邏輯操作。
表示層:負(fù)責(zé)與用戶交互、呈現(xiàn)數(shù)據(jù)等一起與系統(tǒng)表示有關(guān)的操作。
在這個架構(gòu)中,每一層都不是一個類,而是一個類族。所以,在本文中,為數(shù)據(jù)訪問層和業(yè)務(wù)邏輯層分別定義一族接口,業(yè)務(wù)邏輯層不依賴具體的數(shù)據(jù)訪問層,而是僅依賴數(shù)據(jù)訪問層的接口族,表示層也一樣,依賴業(yè)務(wù)邏輯層的接口族。如此一來,當(dāng)要更換數(shù)據(jù)庫時,就不必改寫整個業(yè)務(wù)邏輯層,因為業(yè)務(wù)邏輯層里根本沒有任何數(shù)據(jù)訪問層中的具體類,而全是通過接口實現(xiàn)的。
目前,在典型的三層架構(gòu)中,對層次各自的職責(zé)劃分并沒有一個統(tǒng)一的規(guī)范,綜合現(xiàn)有的成功實踐和.NET平臺的特殊性,在本文中將三層架構(gòu)的職責(zé)劃分如下:
數(shù)據(jù)訪問層——負(fù)責(zé)與數(shù)據(jù)源的交互,即數(shù)據(jù)的插入、刪除、修改以及從數(shù)據(jù)庫中讀出數(shù)據(jù)等操作。
業(yè)務(wù)邏輯層——負(fù)責(zé)系統(tǒng)領(lǐng)域業(yè)務(wù)的處理,負(fù)責(zé)邏輯性數(shù)據(jù)的生成、處理及轉(zhuǎn)換。
表示層——負(fù)責(zé)接收用戶的輸入、將輸出呈現(xiàn)給用戶以及訪問安全性驗證。
面向接口編程的多層架構(gòu)開發(fā)模式下的航運物流管理信息系統(tǒng)模塊見圖1,在宏觀上將整個系統(tǒng)分為以下幾個模塊:
實體類模塊(POJO)——一組實體類的集合,負(fù)責(zé)整個系統(tǒng)中數(shù)據(jù)的封裝及傳遞。
數(shù)據(jù)訪問層接口族(IDAO)——一組接口的集合,表示數(shù)據(jù)訪問層的接口。
業(yè)務(wù)邏輯層接口族(IApp,IServer)——一組接口的集合,表示業(yè)務(wù)邏輯層的接口。
數(shù)據(jù)訪問層模塊(持久層)——一組類的集合,完成數(shù)據(jù)訪問層的具體功能,實現(xiàn)數(shù)據(jù)訪問層接口族。
業(yè)務(wù)邏輯層模塊(App層,Server層)——一組類的集合,完成業(yè)務(wù)邏輯層的具體功能,實現(xiàn)業(yè)務(wù)邏輯層接口族。
表示層模塊(UI層)——程序及可視元素的集合,負(fù)責(zé)完成表示層的具體功能。
IOC容器模塊(類工廠)——負(fù)責(zé)依賴注入的實現(xiàn)。
輔助類模塊(Common層)——完成全局輔助性功能。
依照上面各模塊間交互關(guān)系此航運物流管理信息系統(tǒng)框架圖如圖2。
Client(客戶端):包括UI,App,IApp三個項目。
·UI,使用App接口變量和類工廠(本地模式)。
·IApp,定義函數(shù)接口。
·App,使用Server接口和類工廠(Remoting服務(wù)端singleCall模式),領(lǐng)域的數(shù)據(jù)模型。
Server(服務(wù)器端):Server,IServer,持久層,持久層接口。
·IServer,定義函數(shù)接口。
·Server,使用持久層接口和類工廠(本地模式),企業(yè)數(shù)據(jù)模型,Cache池。
·持久層接口,定義連接數(shù)據(jù)庫函數(shù)的接口。
·持久層,使用強類型數(shù)據(jù)模型,屏蔽底層數(shù)據(jù)庫實現(xiàn),統(tǒng)一數(shù)據(jù)操作唯一入口。
·數(shù)據(jù)庫。
基于.NET面向接口編程的架構(gòu)模式已成功地部署在航運物流管理信息系統(tǒng)中,到目前為止,運行情況良好。其優(yōu)點具體包括:
(1)使用面向接口的編程,接口的實現(xiàn)既可以是基于部門級數(shù)據(jù),也可以是基于企業(yè)級數(shù)據(jù);數(shù)據(jù)層不同的實現(xiàn)策略與業(yè)務(wù)邏輯實現(xiàn)無關(guān);數(shù)據(jù)庫修改引起的程序修改是可以被預(yù)期的。
(2)程序具有一致的結(jié)構(gòu),便于理解和維護,且數(shù)據(jù)的維護只有一個入口。
(3)系統(tǒng)允許遞增迭代開發(fā)。用戶界面、業(yè)務(wù)組件與Web服務(wù)可并行開發(fā),單元調(diào)試與集成調(diào)試的效率都很高。
(4)通過加入Server層,向客戶端屏蔽的數(shù)據(jù)庫連接,數(shù)據(jù)庫不需要向外公布IP地址以提高安全性,連接可以被共享,提高性能。
(5)此開發(fā)模式,做到需求與設(shè)計獨立,設(shè)計與實現(xiàn)獨立,業(yè)務(wù)邏輯實現(xiàn)與數(shù)據(jù)庫獨立;強調(diào)用戶參與,強調(diào)流程的作用,降低個人作用;測試自動化。
[1]張錫平,林亨,徐超,等.2005中國物流總成本研究[J].中國物流與采購網(wǎng),2006(4):24-30.
[2]汪傳旭.世界經(jīng)濟知識化對國際航運業(yè)的影響[J].珠江水運,1999(6):8-9.
[3]王沛仕.加入WTO后我國航運業(yè)的對策性研究[J].珠江水運,2003(4):7-11.
[4]方照琪.信息技術(shù)對航海的影響[J].中國水運,2005(6):50-51.
[5]Cao J D,Li P,Wang W W..Global synchronization in arrays of delayed neural networks with constant and delayed coupling[J].Physics Letters.A,2006,353(4):318-325.
[6]吳煒,張洪偉.微軟.NEI技術(shù)在開發(fā)企業(yè)資產(chǎn)管理系統(tǒng)中的應(yīng)用[J].計算機應(yīng)用研究,2003(2):13-16.
[7]羅鴻,王忠民.ERP原理·設(shè)計·實施[M].北京:電子工業(yè)出版社,2003.
[8]金燦,陳緒君,朱紹文,等..NET框架中三種數(shù)據(jù)訪問技術(shù)及效率比較[J].計算機應(yīng)用研究,2007,20(4):155-157.
[9]胡迎松,彭利文,池楚兵.基于.NET的Web應(yīng)用三層結(jié)構(gòu)設(shè)計技術(shù)[J].計算機工程,2003,29(8):173-175.