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