許 可, 黃志煒, 黃培穎
(1.華南理工大學IBM主機系統(tǒng)教育中心, 廣東 廣州 510006; 2.新加坡國立大學計算機學院, 新加坡 119077)
隨著互聯(lián)網(wǎng)技術(shù)的發(fā)展,眾多公益機構(gòu)紛紛建立了自己的網(wǎng)站,獨立維護著自己的服務(wù)器.由于全國慈善機構(gòu)數(shù)目龐大,僅民政體系下的各市級慈善會就已達600多個,假設(shè)每個慈善機構(gòu)均設(shè)立自己的網(wǎng)站,將需要大量的小型服務(wù)器.如此的運營和布局方式,不僅不利于民政部門對慈善機構(gòu)進行統(tǒng)一監(jiān)督,還會造成資源的重復建設(shè)和巨大消耗;與此同時,捐助網(wǎng)站也需要處理突發(fā)的大規(guī)模捐助業(yè)務(wù),既要保證所提供服務(wù)具備高級別的安全性和穩(wěn)定性,又要保證服務(wù)的持續(xù)可提供性.
IBM大型主機在穩(wěn)定性和安全性上在所有計算機系統(tǒng)中首屈一指,還沒有其他系統(tǒng)可以替代[1],其廣泛應(yīng)用于金融、航空、稅務(wù)等業(yè)務(wù)系統(tǒng)中.而大型主機中的IBM的z/900服務(wù)器更是為下一代電子商務(wù)高性能數(shù)據(jù)和應(yīng)用而設(shè)計的第一款電子商務(wù)企業(yè)級服務(wù)器, 善于處理關(guān)鍵業(yè)務(wù)應(yīng)用并可在大負荷下完成安全交易的無中斷電子商務(wù),同時支持Java、J2EE等新標準[2],這為開放的Java技術(shù)與主機技術(shù)的結(jié)合提供了技術(shù)可行性.因此,本文設(shè)計并實現(xiàn)的捐助服務(wù)系統(tǒng)(下文簡稱系統(tǒng))構(gòu)建在z/900大型主機系統(tǒng)之上,為各慈善機構(gòu)提供統(tǒng)一、安全、穩(wěn)定、專業(yè)、便捷的慈善捐助服務(wù).
系統(tǒng)訪問采用B/S(Browser/Server)結(jié)構(gòu),用戶通過瀏覽器訪問系統(tǒng)提供如下功能:為各慈善機構(gòu)提供統(tǒng)一、專業(yè)、規(guī)范的募捐信息發(fā)布服務(wù)、項目管理服務(wù)、慈善數(shù)據(jù)統(tǒng)計服務(wù);為求助用戶提供便捷的求助申請服務(wù)、受贈信息查詢服務(wù);為捐贈用戶提供安全可靠的在線捐款服務(wù),方便的物資捐贈登記服務(wù),統(tǒng)計報表查詢服務(wù);為業(yè)務(wù)管理員提供專題項目管理服務(wù)、全國慈善數(shù)據(jù)統(tǒng)計服務(wù)等.
根據(jù)業(yè)務(wù)需求的理解,我們將整個系統(tǒng)按應(yīng)用劃分成7個子功能模塊,如表1所示,包括注冊登陸模塊,項目管理模塊,求助管理模塊,捐贈管理模塊,信息發(fā)布模塊,統(tǒng)計查詢模塊及系統(tǒng)管理模塊.
表1 系統(tǒng)業(yè)務(wù)功能模塊表
本系統(tǒng)的用戶分為未注冊用戶、捐贈用戶、求助用戶、慈善機構(gòu)用戶、業(yè)務(wù)管理員、系統(tǒng)管理員,根據(jù)用戶種類的不同提供了不同的操作,如表2所示.
表2 系統(tǒng)用戶操作表
本捐助服務(wù)系統(tǒng)將采用如下整體解決方案:以z/900大型機服務(wù)器作為目標服務(wù)器,在目標服務(wù)器上部署WebSphere Application Server,提供各種Web服務(wù),同時在目標服務(wù)器上安裝DB2數(shù)據(jù)庫.Web服務(wù)通過CICS事務(wù)網(wǎng)關(guān)(CTG)來調(diào)用CICS,完成對數(shù)據(jù)庫的操作或者使用JDBC直接實現(xiàn)對數(shù)據(jù)庫的操作,其參考模型設(shè)計如圖1所示,包括個性化用戶層、標準化服務(wù)層、數(shù)據(jù)訪問層和數(shù)據(jù)存取層.
(1)Web端功能展現(xiàn)模塊:該層是系統(tǒng)在互聯(lián)網(wǎng)上對外發(fā)布的統(tǒng)一入口,也是系統(tǒng)核心實體——慈善機構(gòu)的各種信息、業(yè)務(wù)和功能等資源的統(tǒng)一展示和訪問控制系統(tǒng),服務(wù)對象包括捐贈用戶、求助用戶、慈善機構(gòu)用戶和業(yè)務(wù)管理員,針對不同用戶,提供了不同的功能集合.
(2)3270終端功能展現(xiàn)模塊:該層采用了BMS(Basic Mapping Support)技術(shù),實現(xiàn)3270終端的訪問方式,為系統(tǒng)管理員提供了更加安全可靠的操作環(huán)境.具體設(shè)計為:系統(tǒng)的系統(tǒng)管理員通過3270終端對系統(tǒng)進行訪問,實現(xiàn)系統(tǒng)管理員賬號管理、操作日志查看的功能.3270終端以MAP形式實現(xiàn),系統(tǒng)管理員通過運行CICS事務(wù),調(diào)用MAP形式的3270終端,實現(xiàn)管理操作,這比起在互聯(lián)網(wǎng)上通過Web頁面進行系統(tǒng)管理,可以更有效地防止黑客和病毒的攻擊,具有極高的安全性.
(3)標準化服務(wù)單元(Web Service):在該層將多種服務(wù)資源裝換封裝為標準服務(wù),統(tǒng)一對外發(fā)布,方便服務(wù)消費者通過對Web service的調(diào)用來實現(xiàn)對現(xiàn)有資產(chǎn)的重用.
圖1 系統(tǒng)參考模型圖
(4)數(shù)據(jù)訪問層:為了實現(xiàn)業(yè)務(wù)邏輯與數(shù)據(jù)的分離而添加的一層,這種實現(xiàn)更好地降低了業(yè)務(wù)邏輯和數(shù)據(jù)之間的耦合性.系統(tǒng)采用兩種方式來實現(xiàn)數(shù)據(jù)訪問層:
①采用JDBC實現(xiàn)數(shù)據(jù)庫的訪問.由于系統(tǒng)提供的大部分業(yè)務(wù)對事務(wù)ACID特性的要求并不高,且這些業(yè)務(wù)主要是查詢操作,用戶經(jīng)常使用,所以針對這些特點,在設(shè)計數(shù)據(jù)訪問層時采用了JDBC來實現(xiàn)對數(shù)據(jù)的訪問.
②采用CICS實現(xiàn)數(shù)據(jù)庫的訪問.對于系統(tǒng)提供的關(guān)鍵業(yè)務(wù),如在線捐款業(yè)務(wù),要求確保事務(wù)的ACID特性,采用了CICS來處理這些操作的業(yè)務(wù)邏輯,很好地滿足了這一要求.
(5)數(shù)據(jù)存儲層:系統(tǒng)的各類數(shù)據(jù)的存儲,采用主機DB2數(shù)據(jù)庫來進行存取.
系統(tǒng)由兩部分構(gòu)成,一部分是通過Websphere Application Server發(fā)布,能夠在互聯(lián)網(wǎng)上訪問的Web端;另一部分是在CICS上運行、以Map形式顯示的3270終端.由于兩部分所采用的技術(shù)有所不同,下文分別對兩部分所采用的技術(shù)進行說明.
Web端涉及技術(shù)或框架主要包括SSH框架,即Struts+ Spring+ Hibernate框架[3]、Web Service、CTG、CICS[4]和JDBC技術(shù),這些技術(shù)或框架在各層中的應(yīng)用如圖2所示.下面我們將分別介紹各層的技術(shù)實現(xiàn).
圖2 Web端分層技術(shù)路線圖 圖3 3270終端分層技術(shù)路線圖
(1)Web Service技術(shù):WebSphere平臺是IBM推出的J2EE實現(xiàn)平臺, 也是IBM“In demand”實現(xiàn)技術(shù)的基礎(chǔ), 提供了從開發(fā)、部署到服務(wù)一整套解決方案.其WebSphere Application Server(WAS)套件提供一個豐富的應(yīng)用程序部署環(huán)境,其中具有全套的應(yīng)用程序服務(wù),包括用于事務(wù)管理、安全性、群集、性能、可用性、連接性和可伸縮性的功能.它與Java EE兼容,可與數(shù)據(jù)庫交互并提供動態(tài)Web內(nèi)容的Java組件、XML和Web服務(wù),提供了可移植的Web部署系統(tǒng)[5].系統(tǒng)采用WAS作為Web服務(wù)器,其安全策略提高了系統(tǒng)的安全性[6],WAS提供了對Web Service的管理功能,方便發(fā)布Web Service,是實現(xiàn)Web Service的便利途徑.
(2)Spring技術(shù):系統(tǒng)在表示層采用了Spring與Struts結(jié)合的方法,主要使用Spring IoC來負責管理Struts 2.0的action,同時采用Spring來整合Hibernate數(shù)據(jù)訪問層,使用Spring IoC來管理Hibernate的對象.此外,系統(tǒng)采用了兩種方式來管理事務(wù),一種是采用IBM的CICS來管理關(guān)鍵業(yè)務(wù),實現(xiàn)關(guān)鍵業(yè)務(wù)(如捐款業(yè)務(wù))的ACID特性;另一種是使用Spring的事務(wù)管理功能來管理普通業(yè)務(wù),確保這些操作或流程的原子性.
(3)Struts技術(shù):系統(tǒng)采用了Struts的攔截器功能,實現(xiàn)了AOP,在不影響業(yè)務(wù)流程的情況下,對用戶的個別敏感操作進行記錄,產(chǎn)生操作日志,同時可以使用攔截器來實現(xiàn)權(quán)限管理的功能,此外使用了Strcuts豐富的標簽庫,減少了編寫界面代碼的工作量,簡化了界面設(shè)計的難度.
(4)CTG技術(shù):CTG是連接主機與WEB表示層的關(guān)鍵部件,它與Java EE容器中的JCA緊密結(jié)合.通過ECI協(xié)議,JCA可以與CTG通信實現(xiàn)CICS事務(wù)處理系統(tǒng)和WEB展示層的互聯(lián),使系統(tǒng)具有良好的可擴展性.在互聯(lián)的同時,使用SOAP配置各服務(wù)接口的通信規(guī)范,這樣大大提高了系統(tǒng)靈活性和響應(yīng)能力,使其能做到隨需應(yīng)變.
系統(tǒng)通過將會被發(fā)布成為服務(wù)的Java對象調(diào)用CTG,CTG通過ECI協(xié)議實現(xiàn)與CICS通信,由CICS調(diào)用COBOL程序,最終實現(xiàn)對數(shù)據(jù)庫的操作,以這種方式將CICS資源封裝成SOA的服務(wù).系統(tǒng)針對捐款業(yè)務(wù)對事務(wù)ACID特性、并發(fā)性、安全性和穩(wěn)定性要求較高的特點,采用了通過CTG連接CICS來訪問數(shù)據(jù)庫,實現(xiàn)對數(shù)據(jù)操作的方法.
(5)CICS技術(shù):由于突發(fā)事件的發(fā)生,捐款業(yè)務(wù)往往需要及時,支持大規(guī)模的聯(lián)機交易,而聯(lián)機交易的特點是數(shù)據(jù)處理要求高,響應(yīng)時間短,數(shù)據(jù)量少,交互性強[7].為此,在系統(tǒng)設(shè)計中引入CICS 中間件,CICS調(diào)用程序的流程如下:用戶輸入事務(wù)ID,CICS在PCT中查找事務(wù)ID,以取得程序名稱;CICS在PPT中查找程序名稱,然后將程序加載到內(nèi)存/開始程序,CICS在地址空間運行程序.系統(tǒng)采用CICS來處理關(guān)鍵業(yè)務(wù)的業(yè)務(wù)邏輯——在線捐款,以確保捐款業(yè)務(wù)的ACID特性.
(6)Hibernate技術(shù):系統(tǒng)采用Hibernate作為數(shù)據(jù)訪問層的一部分,通過O/R Mapping技術(shù)將數(shù)據(jù)庫表映射為對象,在編碼過程中,通過對對象的賦值來完成對數(shù)據(jù)庫的操作.
(7)JDBC技術(shù):系統(tǒng)在編碼過程中沒有直接使用JDBC,而是通過Hibernate間接調(diào)用JDBC,實現(xiàn)與數(shù)據(jù)庫的通信.
系統(tǒng)的3270終端在表示層采用了CICS服務(wù)中的BMS技術(shù)來實現(xiàn)Mapset(MAP的集合),在業(yè)務(wù)邏輯層使用CICS Transaction來調(diào)用COBOL語言編寫的程序,通過COBOL程序的執(zhí)行實現(xiàn)對數(shù)據(jù)庫(DB2)的訪問.具體實現(xiàn)如圖3所示,接下來主要對3270終端所用到的主機技術(shù)進行說明.
(1)PSEUDO-CONVERSATIONAL(偽會話):系統(tǒng)3270終端的實現(xiàn)使用COMMAREA來支持偽會話程序模型.COMMAREA是由CICS維護的,在CICS程序間傳輸數(shù)據(jù)的存儲單元.兩個程序之間進行通信時,通過在第一個COBOL程序的WORKING STORAGE SECTION中定義COMMAREA用于傳送數(shù)據(jù),在這個程序退出時將COMMAREA傳送到第二個COBOL程序LINKAGE SECTION中定義的DFHCOMMAREA,從而實現(xiàn)程序間通信,以此支持偽會話的實現(xiàn).
(2)BMS:系統(tǒng)3270終端使用CICS提供的BMS服務(wù)來繪制Mapset,使用匯編語言的宏來定義屏幕的布局,主要使用了3個宏指令:DFHMSD、DFHMDI、DFHMDF.
(3)主機COBOL語言:采用COBOL語言來實現(xiàn)批處理操作,以此生成慈善數(shù)據(jù)統(tǒng)計報表;在3270終端調(diào)用COBOL程序來實現(xiàn)系統(tǒng)管理員的帳號管理和日志查看;在Web端調(diào)用COBOL程序來實現(xiàn)捐款業(yè)務(wù).
本文以捐助基本業(yè)務(wù)為需求,分析并設(shè)計了基于z/900大型主機的網(wǎng)上捐助服務(wù)系統(tǒng).主要利用先進的大型主機技術(shù),將運行在大量服務(wù)器上的工作負載移植到一臺運算能力較強的z/900大型主機服務(wù)器上,可以有效減少物理服務(wù)器數(shù)量,從而達到節(jié)能、環(huán)保、縮減國內(nèi)互聯(lián)網(wǎng)慈善事業(yè)成本的目的.同時, z/900大型主機系統(tǒng)也是目前業(yè)界最可靠和安全的計算系統(tǒng)之一,保證了系統(tǒng)可以處理突發(fā)的應(yīng)急事件,并可保證捐助業(yè)務(wù)7 d*24 h安全不間斷運行.此外,系統(tǒng)將相對封閉的主機技術(shù)與自由開放的Java技術(shù)進行了有效的整合.系統(tǒng)總體實現(xiàn)了捐助業(yè)務(wù)需求中的基本功能,易于部署,具有良好的可靠性、可服務(wù)性和高安全性.
參考文獻
[1] 駱 坤.基于z/OS的大型主機安全管理研究[J].電腦知識與技術(shù),2009,5(28):7 901-7 903.
[2] 湯 峰,李繼宇.基于z/900的銀行證券投資系統(tǒng)的設(shè)計研究[J].昆明冶金高等??茖W校學報,2008, 24(3): 62-65.
[3] 高洪巖.至簡SSH:精通JAVA WEB實用開發(fā)技術(shù)(STRUTS+SPRING+HIBERNATE)[M].北京:電子工業(yè)出版社,2009.
[4] 劉發(fā)貴. IBM S/390事務(wù)處理CICS[M].杭州:浙江大學出版社,2000.
[5] Bassem W.Jamaleddine. IBM WebSphere應(yīng)用服務(wù)器程序設(shè)計[M].北京:清華大學出版社,2003.
[6] 劉永紅,李惠君.基于WebSphere構(gòu)建港口生產(chǎn)管理系統(tǒng)[J].微計算機信息,2007,23(4-3):17-19.
[7] 熊 齊,張 輝.CICS 中間件技術(shù)在金融系統(tǒng)中的應(yīng)用研究[J].計算機工程與設(shè)計,2007,28(9): 2 233-2 235.