宮昭坤
(天津港信息技術(shù)發(fā)展有限公司,天津 300000)
天津港綜合物流信息服務(wù)平臺運(yùn)用先進(jìn)的信息技術(shù)和現(xiàn)代物流技術(shù),優(yōu)化和整合與港口相關(guān)的物流協(xié)助單位、物流服務(wù)提供單位、貿(mào)易型企業(yè)等用戶的信息資源,集天津港物流業(yè)務(wù)信息發(fā)布、查詢平臺、單證傳輸和貨物跟蹤、全面的物流信息技術(shù)于一體,為用戶提供信息互動和信息共享的統(tǒng)一應(yīng)用平臺,使信息服務(wù)由被動向主動轉(zhuǎn)變,為政府監(jiān)管部門和廣大用戶提供“一站式”信息服務(wù)。并且,該平臺的建成,將大大提高海關(guān)的通關(guān)效率、增加貿(mào)易機(jī)會,改善天津港的經(jīng)營環(huán)境,提高天津港的綜合競爭實(shí)力。
由于天津港綜合物流信息服務(wù)平臺內(nèi)容涵蓋廣泛、涉及多個(gè)管理部門和用戶。因此在建設(shè)該系統(tǒng)時(shí),應(yīng)該使該系統(tǒng)能夠在最大限度上滿足天津港綜合物流信息服務(wù)平臺不斷增長和變化的業(yè)務(wù)需求。該系統(tǒng)必須具備的性能有:
2.1 良好的交互性:在平臺的多個(gè)模塊的功能中有相當(dāng)多的人機(jī)交流,所以要求系統(tǒng)的交互性要強(qiáng)。
2.2 較好的擴(kuò)展性:平臺業(yè)務(wù)需求會不斷變化和增長,所以要求系統(tǒng)要具有良好的可擴(kuò)展性。
2.3 具有較好的跨平臺性:用戶可能使用各種不同的操作系統(tǒng),而且為了適應(yīng)今后可能的變化,系統(tǒng)應(yīng)該具有較好的跨平臺性。
2.4 具有較好的可維護(hù)性:系統(tǒng)投入使用后,主要是由管理員承擔(dān)系統(tǒng)維護(hù)的工作,維護(hù)人員不定期變動,這就要求系統(tǒng)的可維護(hù)性強(qiáng)。
3.1 系統(tǒng)開發(fā)框架
隨著軟件系統(tǒng)的規(guī)模和復(fù)雜性的增加 ,軟件體系結(jié)構(gòu)的選擇成為比數(shù)據(jù)結(jié)構(gòu)和算法的選擇更為重要的因素 ,三層客戶/服務(wù)器體系結(jié)構(gòu)為企業(yè)資源規(guī)劃的整合提供了良好的框架 ,是建立企業(yè)級管理信息系統(tǒng)的最佳選擇。在開發(fā)過程中一個(gè)優(yōu)秀的框架可以極大的提高開發(fā)效率。近年來,隨著WEB技術(shù)的發(fā)展,WEB開發(fā)領(lǐng)域出現(xiàn)了很多優(yōu)秀的開發(fā)框架,實(shí)現(xiàn)MVC設(shè)計(jì)模式的Struts框架、實(shí)現(xiàn)數(shù)據(jù)持久化的Hibernate框架就是兩個(gè)比較成功的框架。天津港綜合物流信息平臺采用實(shí)現(xiàn)MVC設(shè)計(jì)模式的Struts框架、實(shí)現(xiàn)數(shù)據(jù)持久化的Hibernate框架相結(jié)合來開發(fā)。
3.1.1 用Struts框架實(shí)現(xiàn)MVC
Struts框架是一種基于MVC經(jīng)典設(shè)計(jì)的開放源碼的應(yīng)用框架,通過把Servlet、JSP、JavaBean、自定義標(biāo)簽和信息資源整合到一個(gè)統(tǒng)一的框架中,為Web開發(fā)提供了具有高可配置性的MVC開發(fā)模式。
Struts框架把一個(gè)應(yīng)用的輸入、處理、輸出流程,按照模型層、視圖層、控制層來劃分。視圖層:提供用戶界面,是用戶和應(yīng)用程序的交互的窗口,既接受用戶輸入,也把模型數(shù)據(jù)狀態(tài)顯示給用戶,但是視圖不負(fù)責(zé)任何業(yè)務(wù)邏輯處理,僅僅是將用戶輸入數(shù)據(jù)傳遞給控制器或?qū)⒛P蛿?shù)據(jù)顯示給用戶。
控制層:提供應(yīng)用的處理過程控制??刂破鬟B接了模型和視圖,根據(jù)用戶請求判斷將請求交給哪個(gè)模型來完成,然后調(diào)用視圖來顯示模型處理后的用戶請求結(jié)果。
模型層:代表應(yīng)用的業(yè)務(wù)邏輯,封裝了用戶數(shù)據(jù)和處理數(shù)據(jù)的業(yè)務(wù)邏輯,體現(xiàn)了應(yīng)用程序的當(dāng)前狀態(tài),而且可以將用戶數(shù)據(jù)狀態(tài)的變化提供給多個(gè)顯示該數(shù)據(jù)的視圖共用,是應(yīng)用程序的核心。
通過Struts框架把應(yīng)用程序進(jìn)行了分層,視圖和模型通過控制器連接,從而減少了用戶界面和業(yè)務(wù)邏輯之間的耦合,使程序設(shè)計(jì)更加清晰、靈活。
Struts框架實(shí)現(xiàn)了MVC設(shè)計(jì)模式,但它是典型的表現(xiàn)層框架,對模型的實(shí)現(xiàn)是不足的,所以有必要引入其他框架加強(qiáng)對模型的實(shí)現(xiàn)。
3.1.2 對象關(guān)系映射工具Hibernate
Hibernate是一種實(shí)現(xiàn)對象和關(guān)系之間映射的框架。ORM,即Object-Relational Mapping(對象關(guān)系映射),它的作用是在關(guān)系型數(shù)據(jù)庫和業(yè)務(wù)實(shí)體對象之間作一個(gè)映射,這樣,我們在具體的操作業(yè)務(wù)對象的時(shí)候,就不需要再去和復(fù)雜的SQL語句打交道,只要像平時(shí)操作對象一樣操作它就可以了。
Hibernate不僅僅管理Java類到數(shù)據(jù)庫表的映射(包括Java數(shù)據(jù)類型到SQL數(shù)據(jù)類型的映射),還提供數(shù)據(jù)查詢和獲取數(shù)據(jù)的方法,可以大幅度減少開發(fā)時(shí)人工使用SQL和JDBC處理數(shù)據(jù)的時(shí)間。
3.2 基于Struts和Hibernate框架構(gòu)建天津港綜合物流信息服務(wù)平臺
通過前面的介紹,Struts和Hibernate都具有自己的優(yōu)點(diǎn)和不足,如果將兩者結(jié)合起來,通過Struts技術(shù)來降低M-V-C各層之間的耦合性,而利用Hibernate架構(gòu)來降低業(yè)務(wù)模型部分的開發(fā)難度。結(jié)合之后的好處是采用Struts和Hibernate結(jié)合開發(fā)出來的信息系統(tǒng)無論在整體的架構(gòu)上還是在局部的復(fù)雜業(yè)務(wù)模型中都得到了更低的耦合性,它們的靈活性與可維護(hù)性也得到了提高,從而消除了單獨(dú)使用這些架構(gòu)的開發(fā)系統(tǒng)的不足。
本系統(tǒng)采用Hibernate+Struts構(gòu)架如圖1所示。
在平臺的實(shí)施方案中,視圖層是采用JSP技術(shù)結(jié)合Struts強(qiáng)大的Taglib來實(shí)現(xiàn);控制層包含業(yè)務(wù)邏輯類,它由Struts的控制組件Action-Servlet、Action、ActionForm、ActionMapping 來實(shí)現(xiàn)。當(dāng)然,這些ActionMapping、ActionForm里封裝了與Hibernate的交互關(guān)系,控制層通過模型層來實(shí)現(xiàn)與數(shù)據(jù)庫資源的交流,這一部分工作由Hibernate來做,最底層是數(shù)據(jù)庫。
圖1 天津港綜合物流信息服務(wù)平臺Hibernate+Struts構(gòu)架
本系統(tǒng)通過整合集團(tuán)公司生產(chǎn)系統(tǒng)(調(diào)度、貨運(yùn))、EDI系統(tǒng)數(shù)據(jù),集物流業(yè)務(wù)信息發(fā)布、查詢平臺、單證傳輸和貨物跟蹤、全面的物流信息技術(shù)于一體,為政府監(jiān)管部門和廣大用戶提供“一站式”信息服務(wù)。本系統(tǒng)采用Struts和Hibernate框架結(jié)合進(jìn)行WEB應(yīng)用程序開發(fā),從而有效的保證系統(tǒng)的可交換性、可維護(hù)性、可擴(kuò)展性和可移植性。
本系統(tǒng)主要由關(guān)港聯(lián)動、物資采供、物流服務(wù)、貨況跟蹤等幾個(gè)模塊組成。系統(tǒng)的總體架構(gòu)如下圖所示:
圖2 天津港綜合物流信息服務(wù)平臺系統(tǒng)結(jié)構(gòu)
4.1 業(yè)務(wù)層的實(shí)現(xiàn)
業(yè)務(wù)層的核心部件是控制器,它由Struts的控制組件 Action Servlet、Action Mapping 及Action來實(shí)現(xiàn),業(yè)務(wù)層還包含業(yè)務(wù)邏輯類,它由JavaBean來實(shí)現(xiàn)。在Struts中,基本的控制器組件是Action Servlet類中的實(shí)例servelt,實(shí)際使用的servlet在配置文件中由一組映射(由Action-Mapping類進(jìn)行描述)進(jìn)行定義。對于業(yè)務(wù)邏輯的操作則主要由 Action、Action Mapping、Action-Forward這幾個(gè)組件協(xié)調(diào)完成的,其中Action扮演了真正的業(yè)務(wù)邏輯的實(shí)現(xiàn)者,Action Mapping與Action Forward則指定了不同業(yè)務(wù)邏輯或流程的運(yùn)行方向。
4.2 模型層的實(shí)現(xiàn)
代表應(yīng)用的業(yè)務(wù)邏輯,封裝了用戶數(shù)據(jù)和處理數(shù)據(jù)的業(yè)務(wù)邏輯,體現(xiàn)了應(yīng)用程序的當(dāng)前狀態(tài),而且可以將用戶數(shù)據(jù)狀態(tài)的變化提供給多個(gè)顯示該數(shù)據(jù)的視圖共用,在這些JavaBean中封裝了與Hibernate的交互關(guān)系,業(yè)務(wù)層通過模型層來實(shí)現(xiàn)與數(shù)據(jù)庫資源的交流,這一部分工作由Hibernate來做,最底層是關(guān)系數(shù)據(jù)庫。
4.3 表示層的實(shí)現(xiàn)
表示層提供了用戶界面,是用戶和應(yīng)用程序的交互的窗口,既接受用戶的輸入,也向用戶展示模型數(shù)據(jù)狀態(tài),但是視圖不負(fù)責(zé)任何業(yè)務(wù)邏輯處理,僅僅是將用戶輸入的數(shù)據(jù)傳遞給控制器或?qū)⒛P蛿?shù)據(jù)顯示給用戶。主要采用了JSP作為視圖的實(shí)現(xiàn),還提供了豐富的JSP標(biāo)簽庫支持應(yīng)用程序的開發(fā),而且引入了ActionForm組件作為用戶表單的封裝來完成數(shù)據(jù)的傳輸。
本文介紹了Struts和Hibernate框架在天津港綜合物流信息服務(wù)平臺中的應(yīng)用,并結(jié)合平臺的具體業(yè)務(wù)論述了如何通過Struts框架和Hibernate框架的相結(jié)合,在系統(tǒng)的整體架構(gòu)、及業(yè)務(wù)邏輯處理中降低耦合性,提高系統(tǒng)的可維護(hù)性和靈活性。實(shí)踐證明,采用Struts和Hibernate結(jié)合J2EE框架進(jìn)行WEB開發(fā),充分發(fā)揮了兩者的優(yōu)點(diǎn),有效地提高了項(xiàng)目的開發(fā)效率,使系統(tǒng)具有良好的交互性、可擴(kuò)展性和可維護(hù)性,基于這兩種框架進(jìn)行WEB應(yīng)用開發(fā)也必將成為主流技術(shù)。
[1]侯婷.基于Struts和Hibernate框架構(gòu)建Web應(yīng)用的研究與實(shí)現(xiàn)[D].武漢理工大學(xué),2006-04-01.