黃 毅,夏中華,顧曉蓉
(天津市水利科學(xué)研究院,天津 300061)
信息化是當(dāng)今各個(gè)領(lǐng)域在發(fā)展過(guò)程中廣泛應(yīng)用的技術(shù)手段之一,信息化科學(xué)在有極大需求的前提下也是迅猛發(fā)展,成為當(dāng)代發(fā)展最快的學(xué)科之一。水利信息化就是指充分利用現(xiàn)代信息技術(shù),深入開(kāi)發(fā)和廣泛利用水利信息資源,包括水利信息的采集、傳輸、存儲(chǔ)、處理和服務(wù)發(fā)布,全面提升水利事業(yè)活動(dòng)效率和效能的歷史過(guò)程。
水利信息化可以提高信息采集、傳輸?shù)臅r(shí)效性和自動(dòng)化水平,主要作用及特點(diǎn)體現(xiàn)在如下幾點(diǎn):建設(shè)水利信息基礎(chǔ)設(shè)施,解決水利信息資源不足和有限資源共享困難等突出問(wèn)題,提高防汛減災(zāi)、水資源優(yōu)化配置、水利工程建設(shè)管理、水土保持、水質(zhì)監(jiān)測(cè)、農(nóng)村水利水電和水利政務(wù)等水利業(yè)務(wù)中信息技術(shù)應(yīng)用的整體水平,帶動(dòng)水利現(xiàn)代化。
信息化科學(xué)早已是獨(dú)立完整的學(xué)科,應(yīng)用上有完善的體系、成熟的技術(shù)、創(chuàng)新的思維。水利行業(yè)作為最古老的工程行業(yè)之一也有自己的特點(diǎn):水資源方面有水文數(shù)據(jù)信息量大、時(shí)間跨度大、種類(lèi)多,需要提煉、聚合信息等特點(diǎn);防汛抗旱減災(zāi)方面有數(shù)據(jù)來(lái)源多,各方面數(shù)據(jù)之間關(guān)聯(lián)性強(qiáng),需要各類(lèi)匯總結(jié)果做決策依據(jù)等特點(diǎn);數(shù)據(jù)采集方面有傳輸實(shí)時(shí)性強(qiáng),確保數(shù)據(jù)通路穩(wěn)定,確保監(jiān)測(cè)信息來(lái)源準(zhǔn)確等特點(diǎn);水務(wù)管理方面有牽涉方面廣,流程性強(qiáng)等特點(diǎn)。如何把信息化科學(xué)和水利科學(xué)有機(jī)地結(jié)合起來(lái),是需要不斷地實(shí)踐和總結(jié)的。
信息系統(tǒng)可以分為數(shù)據(jù)訪(fǎng)問(wèn)層、業(yè)務(wù)邏輯層、表現(xiàn)層[1]3個(gè)層次。數(shù)據(jù)訪(fǎng)問(wèn)層主要負(fù)責(zé)數(shù)據(jù)庫(kù)的訪(fǎng)問(wèn);業(yè)務(wù)邏輯層的關(guān)注點(diǎn)主要集中在業(yè)務(wù)規(guī)則的制定、流程的實(shí)現(xiàn)等與業(yè)務(wù)需求有關(guān)的系統(tǒng)設(shè)計(jì),也即與系統(tǒng)所應(yīng)對(duì)的領(lǐng)域邏輯有關(guān),它處于數(shù)據(jù)訪(fǎng)問(wèn)層與表示層中間,起到數(shù)據(jù)交換中承上啟下的作用,是整個(gè)系統(tǒng)的業(yè)務(wù)核心;表現(xiàn)層用于顯示數(shù)據(jù)和接收用戶(hù)輸入的數(shù)據(jù),為用戶(hù)提供一種交互式操作的界面。
數(shù)據(jù)訪(fǎng)問(wèn)層實(shí)現(xiàn)對(duì)數(shù)據(jù)表的選擇、插入、更新、刪除等操作,業(yè)務(wù)邏輯層調(diào)用它主要有直接連接數(shù)據(jù)庫(kù)或調(diào)用存儲(chǔ)過(guò)程2種方式。
業(yè)務(wù)邏輯層通過(guò)一定的邏輯對(duì)數(shù)據(jù)層的數(shù)據(jù)進(jìn)行讀寫(xiě)操作,它提供的服務(wù)既可以通過(guò) Web 或 WCF服務(wù)來(lái)體現(xiàn)[2],也可以用一種輕量型的方式直接連接數(shù)據(jù)庫(kù)并獲得服務(wù),如 ADO.NET,LINQ 體現(xiàn)。
開(kāi)發(fā)人員通過(guò)研究用戶(hù)的需求,在頁(yè)面上將業(yè)務(wù)邏輯層提供的功能有機(jī)組織起來(lái),表現(xiàn)出來(lái),這是直接面向用戶(hù)的表現(xiàn)層。
在信息系統(tǒng)中,3個(gè)層次相互連接,其中業(yè)務(wù)邏輯層尤為重要,因此要根據(jù)實(shí)際應(yīng)用選擇適用的技術(shù)。
目前水利信息化系統(tǒng)的項(xiàng)目,大體可以分為以下2類(lèi):一類(lèi)是著重于工程控制的,如:泵站優(yōu)化、管網(wǎng)管線(xiàn)輸水調(diào)度優(yōu)化、潮位實(shí)時(shí)監(jiān)控等;一類(lèi)是著重于部門(mén)業(yè)務(wù)管理的,如辦公 OA,模擬工作流程、管理等。
根據(jù)目前我國(guó)的情況,水利行業(yè)的信息系統(tǒng)有以下2個(gè)共同特點(diǎn):
1)用戶(hù)范圍較小,無(wú)論從地區(qū)和人數(shù)上說(shuō)都是如此;
2)擁有特定的用戶(hù)群,因此實(shí)現(xiàn)的業(yè)務(wù)邏輯功能要滿(mǎn)足特別的需求;
由于上述2個(gè)特點(diǎn),在架設(shè)服務(wù)器和編寫(xiě)軟件時(shí)具有以下2個(gè)特點(diǎn):
1)服務(wù)器一般都采用集中安置,所有服務(wù)器都放置在同一機(jī)房?jī)?nèi),從網(wǎng)絡(luò)結(jié)構(gòu)上看所有服務(wù)器都在一個(gè)內(nèi)網(wǎng)中,然后映射出互聯(lián)網(wǎng);
2)在業(yè)務(wù)實(shí)現(xiàn)上,為了貼近特定用戶(hù)的工作需求,所以業(yè)務(wù)邏輯較為復(fù)雜。
通過(guò)描述,再結(jié)合3層結(jié)構(gòu),可以分析出各種技術(shù)在水利行業(yè)中的適用范疇。
在水利行業(yè)中一般對(duì)其本身業(yè)務(wù)非常重視,所以業(yè)務(wù)邏輯層是這個(gè)系統(tǒng)的核心。
在業(yè)務(wù)邏輯層中,除了 Web 和 WCF 服務(wù),還有一種輕量型的服務(wù),它直接連接數(shù)據(jù)庫(kù)并獲得服務(wù)。通過(guò)它實(shí)現(xiàn)業(yè)務(wù)邏輯時(shí),經(jīng)常將業(yè)務(wù)邏輯層和表現(xiàn)層結(jié)合在一起。這種服務(wù)有:.NET 架構(gòu)的 ADO.NET,LINQ(語(yǔ)言集成查詢(xún)),XML 等。
Web 或 WCF 服務(wù)都是針對(duì)互聯(lián)網(wǎng)發(fā)展愈發(fā)龐大而產(chǎn)生的技術(shù),更適合于在互聯(lián)網(wǎng)中各個(gè)服務(wù)器之間相互調(diào)用服務(wù)。這些業(yè)務(wù)邏輯層的服務(wù)事先編好,獨(dú)立發(fā)布,再由系統(tǒng)的表現(xiàn)層調(diào)用。具體優(yōu)點(diǎn)如下:開(kāi)發(fā)人員可以只關(guān)注整個(gè)結(jié)構(gòu)中的其中某一層;可以很容易用新的實(shí)現(xiàn)來(lái)替換原有層次的實(shí)現(xiàn);可以降低層與層之間的依賴(lài);有利于標(biāo)準(zhǔn)化;利于各層邏輯的復(fù)用。
在需要服務(wù)分層分級(jí)部署或服務(wù)器之間要通過(guò)互聯(lián)網(wǎng)聯(lián)系時(shí),使用這種技術(shù)比較適合,如企業(yè)的分布部署或業(yè)務(wù)邏輯層提供的服務(wù)要調(diào)用另外在其它服務(wù)器上發(fā)布的服務(wù)。它有以下缺點(diǎn):
1)降低了系統(tǒng)的性能。如果不采用分層式結(jié)構(gòu),很多業(yè)務(wù)可以直接造訪(fǎng)數(shù)據(jù)庫(kù),以此獲取相應(yīng)的數(shù)據(jù),如今卻必須通過(guò)中間層來(lái)完成。
2)降低了靈活性。有時(shí)會(huì)導(dǎo)致級(jí)聯(lián)的修改,這種修改尤其體現(xiàn)在自上而下的方向。如果在表示層中需要增加1個(gè)功能,為保證其設(shè)計(jì)符合分層式結(jié)構(gòu),可能需要在相應(yīng)的業(yè)務(wù)邏輯層和數(shù)據(jù)訪(fǎng)問(wèn)層中都增加相應(yīng)的代碼。
通過(guò)分析水利行業(yè)信息系統(tǒng)特點(diǎn),可以看出目前水利行業(yè)系統(tǒng),在網(wǎng)絡(luò)的物理連接上大多屬于內(nèi)網(wǎng),提供通過(guò) ADO.NET,LINQ 等技術(shù)訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)的便利性;由于要貼近實(shí)際業(yè)務(wù),要求用戶(hù)在頁(yè)面和功能上緊密有機(jī)的結(jié)合,以實(shí)現(xiàn)復(fù)雜的邏輯關(guān)系,并符合用戶(hù)的日常工作習(xí)慣。因此需要靈活的編程方式。
類(lèi)似 ADO.NET,LINQ 這種直接連接數(shù)據(jù)庫(kù)的輕量型的服務(wù),將系統(tǒng)業(yè)務(wù)邏輯層和表現(xiàn)層結(jié)合起來(lái),有利于在水利行業(yè)信息系統(tǒng)中實(shí)現(xiàn)業(yè)務(wù)邏輯復(fù)雜,并且需要經(jīng)常改動(dòng)的系統(tǒng)。
在筆者參與的一個(gè)關(guān)于防潮的項(xiàng)目中,從功能上看包含 GIS 和一般業(yè)務(wù)2個(gè)部分。在 GIS 相關(guān)模塊中,業(yè)務(wù)邏輯層用 WCF 服務(wù)實(shí)現(xiàn),WCF 既繼承了 Web 服務(wù)的優(yōu)點(diǎn),而且在跨平臺(tái)方面做得更好[3];在業(yè)務(wù)邏輯方面用 .NET Framework 提供的 LINQ 結(jié)合 ADO.NET 來(lái)實(shí)現(xiàn)輕量型的業(yè)務(wù)邏輯服務(wù),而且將業(yè)務(wù)邏輯層和表現(xiàn)層結(jié)合在一起。
這樣構(gòu)建系統(tǒng)服務(wù)的原因如下:
1)GIS 所應(yīng)用的服務(wù)邏輯上相對(duì)簡(jiǎn)單,大多是對(duì)于數(shù)據(jù)庫(kù)簡(jiǎn)單的檢索、存儲(chǔ),而且所有操作都在地圖范圍內(nèi),所以業(yè)務(wù)邏輯層提供的服務(wù)相對(duì)穩(wěn)定,不會(huì)經(jīng)常修改。這樣用 WCF 服務(wù)來(lái)實(shí)現(xiàn)業(yè)務(wù)邏輯層是比較合適的。
2)由于系統(tǒng)要提供貼合防潮業(yè)務(wù)的功能,所以頁(yè)面布局和功能實(shí)現(xiàn)要有機(jī)地結(jié)合在一起,以滿(mǎn)足用戶(hù)復(fù)雜的業(yè)務(wù)邏輯和操作習(xí)慣。并且在開(kāi)發(fā)甚至使用期間,根據(jù)用戶(hù)要求還要做出反復(fù)大量的更改。在這種情況下,由于頁(yè)面和功能結(jié)合緊密,改動(dòng)任何一方面,另一方面都要跟著做出調(diào)整,所以采用靈活性更大,修改更容易的 LINQ 和 ADO.NET來(lái)實(shí)現(xiàn)。
3)由于系統(tǒng)應(yīng)用范圍只在本市水利系統(tǒng),并且用戶(hù)也只是防潮相關(guān)人員,所以分別對(duì)應(yīng)軟件3層結(jié)構(gòu)的3臺(tái)服務(wù)器,都架設(shè)在1個(gè)機(jī)房?jī)?nèi),形成1個(gè)內(nèi)網(wǎng)。這也為應(yīng)用 LINQ 和 ADO.NET 這種輕量型的服務(wù)提供了物理?xiàng)l件。
另一個(gè)典型的系統(tǒng)是目前水利普查所用到的軟件,這套軟件要求每個(gè)省都配有自己的機(jī)房來(lái)安置一整套服務(wù)器,發(fā)布水利普查網(wǎng)站,供本省水利普查人員使用。而每個(gè)省的系統(tǒng)又都連接到中央的總系統(tǒng)中,用于從地方傳輸普查數(shù)據(jù)到中央。這套系統(tǒng)同樣是 Web 和輕量型服務(wù)的結(jié)合。
在每個(gè)省的系統(tǒng)中,由于服務(wù)器都安置在一起,并且只供水利普查人員使用,所以沒(méi)有明顯區(qū)分業(yè)務(wù)邏輯層和表現(xiàn)層;而每個(gè)省要上傳數(shù)據(jù),就用到中央服務(wù)器所提供的服務(wù),由于中央通過(guò)互聯(lián)網(wǎng)和各地聯(lián)系,所以通過(guò)類(lèi)似 Web 服務(wù)的技術(shù)實(shí)現(xiàn)。
并不是越新出來(lái)的技術(shù)就越符合系統(tǒng)要求,以前成熟的技術(shù)也同樣在發(fā)展,而且易用性更高。設(shè)計(jì)好系統(tǒng)的關(guān)鍵就是要將合適的技術(shù)應(yīng)用到合適的地方。在水利行業(yè)中,應(yīng)該將新的類(lèi)似 WCF 服務(wù)的技術(shù)與老的 ADO.NET 結(jié)合起來(lái),結(jié)合得越好,編寫(xiě)程序、擴(kuò)展軟件和修改也就越容易。
[1] 溫昱.軟件架構(gòu)設(shè)計(jì)[M].北京:電子工業(yè)出版社,2007: 7.
[2] 溫昱.一線(xiàn)架構(gòu)師[M].北京:電子工業(yè)出版社,2009: 152.
[3] Steve Resnick .WCF 核心技術(shù)[M].北京:人民郵電出版社,2009: 5.