摘 要:沈陽機床一直比較注重“科技興產”。順利完成集團分配的工作任務之外,還不遺余力的將生產流程中的重要環節優化完善,使生產效率不斷提高、安全性得到加強。文章從架構層面解析了沈陽機床客服網的設計原則和考慮。為沈陽機床客服網的高效、穩定可擴張的需求做了概念設計。
關鍵詞:軟件工程;系統架構;交互模式
1 需求分析
沈陽機床客服網作為沈陽機場服務系統的資模塊,必須達到以下的要求。與前期開發的沈陽機床客服管理系統無縫的結合,充分利用沈陽機床客服管理系統的計算資源和能力,提供優質可靠的服務。通知為了滿足企業將來開發的管理系統,讓基于沈陽機床客服網的計算能力得到延伸,避免二次開發,系統要以面向服務的形式開發。并向用戶暴露各種外部服務的接口以供調用。
2 設計思路
由需求向設計轉換。設計是從需求向產品轉化的過程,在需求調研階段,我們確定了系統的功能、系統的質量要求和系統的約束條件。他們都將在不同程度上影響我們的設計。不同的需求,影響架構的原理也不相同。在設計過程中,我們并不是自定向下的又頂層架構做起,而是著眼于更大的目標,由關鍵需求確定架構。再由其它需求驗證,證實他們在現有的框架下可行。如果不可行,則認為遇到技術障礙,需要改善現有的設計。
3 系統分層架構設計
在開發基于沈陽機場客服網過程中,由于應用的復雜性(開發新功能,和原有的系統集成、為未來的系統做設計)。我們需要對系統分層,劃分和封裝不同的關注點,包括功能性的關注點和基礎設施的關注點。否則將系統的關注點業務邏輯,數據獲得,報文處理等放在一起處理,破壞了系統的松耦合性。導致各產品組件的獨立開發、配置和部署更加復雜。將不同的關注點分離的另一個原因是系統不同因素的變化速率不同。例如系統的界面通常比核心功能變化的快,核心功能比數據庫變化的快。修改之應當限定在有限的范圍內,而不影響其他的部分——任何漣漪效應都應該避免。沈陽機場客服網,可以劃分為四層,系統的邊界是用操作系統和互聯網。系統內部層次的劃分如圖1所示。
圖1
系統的表現層,我們可以以區分不同的應用包括現有的沈陽機床客服網,以及其它的可能潛在開發應用。在業務處理層,他們其實都是調用同一套業務處理接口。業務處理的對象的來源復雜,他們分別是傳統的業務信息數據庫,地理信息數據庫和webservice服務。在該層我們將數據的訪問抽象為統一的接口,以DAO層api的形式暴露給用戶,用戶不用知道數據的來源。通過層次劃分,讓每層中得到幾個完備的、內聚的、功能相關的Domain Object。嚴格封裝并模塊化了同一抽象層次上不同職責的模塊。
發送客戶端請求和從網絡接收回復涉及到各種底層的進程管理,比如連接管理、超時處理和錯誤偵查等。這些處理如果和數據獲得和處理混淆在一起,就會影響系統的松耦合性。因此封裝一個特化的Cilent Request Handler,它可以代表客戶端組件封裝和執行所有的不同進程間的通信任務。客戶組件通過它向網絡發送響應,并接受響應。在Client Request Handler內部對所有客戶端的網絡資源實施集中化的執行和管理,可以提高分布式應用的服務質量,尤其是延遲的時間、吞吐量和可伸縮性和資源的利用。客戶端在向地圖服務發送請求時,由特定的IPC機制進行封裝,通信對客戶端是透明的。在client request handler 內部,為了處理網絡訪問的并發性問題,需要對訪問的線程進行同步。由于客戶每天次訪問量不高,我們對ip連接上使用了一個同步鎖,每次訪問只有一個用戶可以進入。(客戶訪問量不高,切允許訪問失敗)。
4 可擴展性研究
系統要持續的與已有系統和新開發的系統集成,并且用戶界面希望在將來能夠支持移動客戶。盡管這些改動讓存在差異,應用的所有版本基本都是基于一個公共的架構和功能和核心。這樣的目的是系統集成過程中不會出現核心框架的修改。Microkernel架構實現了應用所有版本共享的功能,為系統的持續集成某個版本的特有功能提供了基礎設施。內部實現是在我完備的特定版本的功能;外部服務實現特定版本的用戶界面或API(圖2)。對于要增加的外部服務,只需要間響應的內部服務和Microkernel連接起來,并提供合適的外部服務實施其中的功能。
圖2
5 交互協議
基于Microkernel的架構設計,我們需要使用一種基于http請求的訪問協議來作為系統的API。我們選擇了基于restful架構風格的api,REST這個詞,它是Roy Thomas Fielding在他2000年的博士論文中提出的。Thomas認為改變應用程序的互動風格比改變互動協議,對整體表現有更大的影響。于是想在符合架構原理的前提下,理解和評估以網絡為基礎的應用軟件的架構設計,得到一個功能強、性能好、適宜通信的架構。Representational State Transfer又稱表現層狀態轉化,所謂“資源”,就是網絡上的一個實體,或者說是網絡上的一個具體信息。
其消息形式如下
GET /location # 獲取locatin列表
獲取的返回數據格式如下
{
Alt: "39.9057";
Lng: "105.2715"
}
6 結束語
沈陽機床客服網設計通過分層,內設設計,交互方式設計充分滿足了易用性,可擴展性的要求。是一套行之有效的解決方案。為指導沈陽機床客服網編碼提供了有效的邏輯架構。
作者簡介:陳海利(1987-),男,河北省滄州市,同濟大學軟件工程專業碩士生在讀碩士,研究方向:數據挖掘、軟件工程。