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