摘 要:本文結合鐵路工程概預算軟件項目的實例,闡述了對N層體系架構技術的理解,并通過分析具體的項目特點,詳細地表述了如何設計一個可以靈活部署為單臺計算機應用模式、企業(yè)局域網應用模式、Internet應用模式的分布式應用系統(tǒng)的體系結構設計方案。
關鍵詞:鐵路概預算;軟件系統(tǒng)設計;N層體系結構;Web服務;分布式應用程序;應用程序部署
中圖分類號:TP311.52;U215.1 文獻標識碼:A 文章編號:2096-4706(2018)02-0022-03
The Application Architecture Design of Budgetary Estimation of Railway Engineering
ZHANG Chi
(Dalian JiYi Logistics Co.,Ltd.,Dalian 116601,China)
Abstract:In this article,via a software project of budgetary estimation of railway engineering,the author describes the understanding of the technique of N-tire architecture. By analyzing the characteristic of the concrete project,the author illustrates how to make a system architecture design plan of a distributed software application,in which explained that the application can be deployed flexibly by a single desktop mode,or by an enterprise intranet mode,or by the internet mode.
Keywords:budgetary estimation of railway engineering;software system design;N-Tier;Web service;distributed application;application deployment
引 言
隨著計算機科學技術的不斷發(fā)展,軟件的規(guī)模和應用領域迅速擴大,造成了軟件程度的復雜度不斷加大,所以高效地開發(fā)出高質量的軟件產品越來越困難,于是軟件開發(fā)人員開始關注如何找到理解軟件的更好途徑和探討是否存在更好的途徑來構造復雜的大型軟件系統(tǒng)。為此,作為基層的計算機技術人員,我們對手頭的工作項目進行了深入的思考。下面,結合我們在鐵路概預算軟件開發(fā)過程中的體會,就如何用N層體系結構來設計該項目的系統(tǒng)結構,進行簡單介紹。
1 N層體系結構簡介
設計和數據庫相關的軟件系統(tǒng),總逃不開在如何確定系統(tǒng)的體系結構的問題上做出選擇。隨著網絡技術的不斷發(fā)展,體系結構已經從當年的不分層,發(fā)展到今天的N層體系結構。軟件的設計實現也從當年無規(guī)矩可循的泥沼中,走到今天規(guī)范的高速路上來。
最初的解決方案是不分“層”的,隨著網絡技術的發(fā)展,數據層被分離出來,這樣就形成了一個典型的兩層結構的系統(tǒng)設計。在這種架構中,數據庫系統(tǒng)在后臺存儲和管理數據,在用戶界面層里,負責進行業(yè)務邏輯的處理和表示。雖然在大多數情況下,這些已經足夠解決問題了,但仍存在著一些缺陷,如由于客戶端包含了業(yè)務邏輯,業(yè)務邏輯一改,所有客戶端都要升級等。由此,三層架構出現了,業(yè)務邏輯層被從客戶端分離出來,并被部署在一臺服務器上,客戶端簡單到只是IE瀏覽器。這樣,便彌補了兩層架構的缺陷。但對于需要在復雜客戶端操作的軟件系統(tǒng),這么“瘦”的客戶端顯然是不能滿足需求的,所以客戶端必須是復雜的應用程序界面,那么,業(yè)務邏輯又應該放到哪里呢?
隨著組件技術的不斷發(fā)展,N層架構出現了,這給上文的提問以多樣的解決方式。N層架構還是以三層架構為基礎的,只是業(yè)務邏輯層被劃分得更細,如表示層和業(yè)務邏輯的接口被從業(yè)務邏輯層單獨分離出來,業(yè)務邏輯和數據庫的接口也被從業(yè)務邏輯層單獨分離出來,數據實體層被單獨定義,這樣每層的邏輯更單一,層與層的接口更清晰,而這一切帶來的就是更容易地升級、更簡單地維護、更靈活地部署。
總結了這么多的分層方式,可以看出,給出一個設計方案是有多種選擇的。采用何種方案的標準是:哪種體系結構的設計方案更適合我們的具體項目;適合的標準是:體量合適、效率滿足需要、易于升級、易于維護、可以靈活部署。
下面以我們的項目為案例,闡述我們的解決方案。
2 鐵路概算軟件的項目特點
設計鐵路概算軟件體系結構時,以下方面是必須考慮到的:
2.1 多專業(yè)配合工作
一個工程項目一般包含多個子工程,每個子工程需要多個專業(yè)配合設計。比如一個房建工程就涉及房屋、水暖、電力、裝飾、機械等專業(yè);更大的工程如一個秦沈客運專線,就需要多個車站多個區(qū)間的線路工程、橋梁工程、房建工程、信號工程、通信工程等。如此說來,我們面臨這樣一個事務模型:它是由許多相互關聯(lián)的子事務構成的,這些子事務模型共享基礎資源,共享設計標準,彼此有時序關聯(lián),互為約束條件。
2.2 多人協(xié)作工作
用戶是軟件設計時要考慮的第一要素。一個復雜的概算項目是由許多角色共同參與、彼此配合來完成的。這在本項目中表現得尤為突出。如,一種典型概算編制的工作模式就是:具體設計者完成自己負責的個別概算;概算科負責配置定額標準,設計標準,并進行統(tǒng)計匯總;項目總負責人或總工程師負責審核,以及責令修改。在這種模式中,要由許多有特定權限的角色共同協(xié)作來完成工作。
2.3 異地并行工作
隨著Internet接入的不斷普及,異地(非公司局域網范圍內)并行工作成為可能,而這也正符合大型勘查設計工作的特點。另一種情況是,概算審查單位(比如上級主管部門、建設單位)也都處于本單位局域網之外,他們也有要求通過Internet訪問某特定概算的需求。
這些情況,帶來了通過Internet訪問本系統(tǒng)的需求。
2.4 多變的部署規(guī)模
大的設計院,一般有幾百個設計人員,有幾十個人的工經處;中型的設計院,有近百個設計人員,有十余人的概算科;而眾多小型設計所、施工單位,有可能只有一個人,需要在一臺電腦上完成所有操作。
對于這種種需求,在今天飛速發(fā)展的計算機技術面前,其有效實現都已經成為可能。
3 采用的軟件技術
(1)數據庫系統(tǒng)采用了MS SQL Server2008。(2)客戶端采用了MS.Net Windows Application和IE配合使用。(3)服務端組件的設計采用了.Net Managed Component和ASP.NET。(4)Web服務器采用MS IIS。(5)數據交換技術,采用了兩種技術,一是基于SAOP協(xié)議的XML Web Service,它可以穿透防火墻,適于Internet應用;二是基于TCP或HTTP協(xié)議,傳送Binary Stream的.Net Remoting,它交換速度更快,適于局域網內部應用。由于這些技術不在本文的討論范圍之內,故不展開討論。
4 我們的鐵路概算軟件的體系結構
基于以上種種考慮,我們的鐵路概預算軟件的體系結構設計共分為六層,如圖1所示,箭頭代表調用關系。
4.1 客戶端表示層
該層采用有著豐富表現形式的Windows應用程序作為客戶端程序,通過這個界面,可以實現復雜的輸入和處理方式,也能更好地利用客戶端的資源,這是IE插件所難以辦到的。
4.2 業(yè)務邏輯接口層
該層用來將客戶端表示層和業(yè)務邏輯層隔離。在該層中,主要完成用戶權限管理工作,只有有權限的用戶才能存取相應的業(yè)務。同時,在該層中完成界面表示層和業(yè)務邏輯層之間數據格式的轉換。該層也為之后靈活地部署提供了條件。
4.3 業(yè)務邏輯層
該層的功能是比較好理解的——在該層中處理所有定額的管理邏輯、規(guī)則的定義邏輯、概算的計算邏輯,以及所有數據格式的合理性檢查。同時,它又是對多種來自業(yè)務邏輯接口層的一種歸納抽象,可以降低冗余業(yè)務邏輯,提高代碼的內聚性。
4.4 數據接口層
該層的功能很單一,是內存中的數據集和數據庫之間的接口。它只負責定額、概算數據和數據庫之間的交換。它是業(yè)務邏輯層對數據庫的調用的一種歸納和抽象,能夠大幅度地降低冗余代碼。
4.5 數據實體層
數據實體層是數據庫中的實體在組件中的再定義。為什么要把它單獨分離出來呢?這是因為其他各層從本質上說都要和數據庫對話,業(yè)務邏輯操縱的業(yè)務實體就是數據庫中的實體,而在N層結構中,只有數據接口層才能和數據庫交流,為此我們創(chuàng)建了數據實體層。從上圖中可以看出,其他各層都要對本層進行訪問。同時帶來的好處是,它是數據庫中的實體的所有信息在組件中的映象,它對所有數據實體在組建中建立了強制類型的約束。
4.6 數據庫層
數據庫層負責定額、規(guī)則、概算數據的存取。把所有業(yè)務邏輯從數據庫層剔除,當然是理想化的,但同時也會使我們不得不放棄數據庫管理軟件的強大功能所帶來的好處。為此我們還是利用了數據庫提供的關聯(lián)、索引、約束等手段,同時設計了簡明的存儲過程和觸發(fā)器,在提供和數據接口層交流的同時,降低業(yè)務邏輯層的工作量。
5 多層的優(yōu)點
有的讀者可能會問,這么簡單的一個輸入定額、費率、再計算、輸出報表的過程用得著設計這么多層嗎?那么,拋下邏輯清晰、便于升級、便于維護等優(yōu)點不講,下面介紹幾種部署方案,來簡單了解一下N層體系結構設計帶來的其他益處。
5.1 簡單的個人版的部署
這類用戶可能只有一臺電腦,需要我們將所有組件都部署在同一臺機器上。數據庫可以安裝SQL Server MSDE,同時簡化用戶管理模塊,使該用戶擁有所有權限。這樣,該用戶會覺得和使用一個單機版的軟件沒有區(qū)別。
5.2 一個中大型企業(yè)的部署
圖2是各種組件在一個企業(yè)局域網內部的部署:
豎虛線左面的是網絡拓撲結構,右面的是各層部署的組件。服務器集群的作用是均衡網絡負載,那么客戶的個數將只會受到集群的大小的限制。一般情況下,幾百人的企業(yè)有一臺電腦也足夠了。
5.3 面向Internet用戶的部署
圖3是各種組件在一個Internet解決方案中的部署:
從這張圖中可以看出,客戶端可以通過調用Web Service,在Internet上訪問本系統(tǒng),同樣為了降低海量用戶訪問的壓力,可以設計兩個服務器集群,一個是web服務器集群,它是一個橋梁,溝通外部世界;另一個集群是組件服務器集群,用以完成業(yè)務邏輯處理。兩個集群之間用.Net Remoting連接。
這樣,通過組件的部署與配置,我們的軟件系統(tǒng)已經發(fā)展為一個可以在Internet級別上應用的大型系統(tǒng),可以為廣大的客戶提供鐵路工程概預算服務。
6 結 論
以上是我們對鐵路概預算軟件項目設計的簡單介紹。通過對N層體系架構的理解、對具體項目的分析,闡述了在本項目中,我們對層次的劃分,以及它所帶來的益處。
我們希望能夠將工作中的切身體會進行歸納總結,并試圖得出超出具體軟件項目之外的規(guī)律性的東西。希望同行們批評指正,讓我們工程技術人員一起努力,把最新的計算機軟件技術應用到生產實踐中,讓新興的軟件信息技術為鐵路建設事業(yè)服務。
參考文獻:
[1] 李準,王曉剛.鐵路工程概預算工程數量自動套用定額系統(tǒng)研究 [J].鐵道標準設計,2014,58(3):141-145.
[2] 陳瑜.基于專家系統(tǒng)的鐵路工程單項概算編制研究 [J].鐵道標準設計,2017,61(1):154-158.
[3] 金強.新版鐵路工程概預算編制辦法與費用定額的特點及應用 [J].鐵路工程技術與經濟,2017,32(4):13-16.
作者簡介:張弛(1988.03-),男,漢族,遼寧錦州人,本科,助理工程師。主要從事計算機應用相關研究。