低耦合企業級系統架構設計
我們往往稱JavaEE或.Net 開發的產品為“系統”,而移動平台(主要是:Android、iOS和Window Phone)開發的產品為“應用”。“系統”比較複雜,需要架構設計,而“應用”相對比較簡單,這是不是意味著我們不需要考慮架構問題呢?
我 們首先瞭解一下企業級系統架構設計。軟體設計的原則是提高軟體系統的“可複用性”和“可擴充性”,系統架構設計採用層次劃分方式,這些層次之間是 松耦合的,層次的內部是高內聚的。降低耦合是軟體設計的目標,能夠設計出低耦合的系統,就意味著我們的系統具有“可複用性”和“可擴充性”。通用低耦合 JavaEE和.Net企業級系統架構圖。
展示層是使用者與系統互動的組件集合,使用者通過這一層向系統提交請求或發出指令,系統通過這一層接收使用者請求或指令,然後,將指令消化吸收後調用下一層,再將調用的結果展現到這一層。展示層應該是輕薄的不應該具有商務邏輯。
業務層是系統的核心業務處理層,負責接收展示層的指令和資料,消化吸收後,進行組織商務邏輯的處理,並將結果返回給展示層。
資料持久層是服務層用於訪問資料庫層,從設計規範上講為了降低耦合度,服務層不應該具有訪問資料庫的代碼,訪問資料庫的代碼應該放到資料持久層中。
資訊系統層,是系統的資料來源,可以是資料庫、檔案、遺留系統和網路資料。
移動平台的分層架構設計
移動平台的應用是縮小版本的系統,它也需要架構設計,但並非所有的應用都一定基於通用低耦合企業級系統架構,一般而言主要是涉及資訊處理的應用才使用這種架構設計模式,例如:一些遊戲有自己的遊戲引擎,引擎也屬於架構設計。iOS平台一般資訊處理應用分層架構設計圖。
展示層,iOS中的展示層是由UIKit Framework構成的,它包括我們前面學習的視圖、控制器、控制項和事件處理等內容;
商務邏輯層,採用什麼架構要據具體的業務而定,但一般是具有一定業務處理功能的Objective-C和C++封裝的類,或者是C封裝的函數。
資料持久層,提供本地或網路資料訪問,它可能是訪問SQLite資料API函數,也可能是CoreData技術,或是訪問檔案的NSFileManager,或是網路通訊等技術,採用什麼方式要看資訊系統層是什麼。
資訊系統層,就iOS而言它的資訊來源分為:本地和網路。本機資料可以放入檔案中也可以放在資料庫中,目前iOS本機資料庫採用SQLite3。網路可以是某個雲端服務,也可以是一般的Web服務。
基於同一工程的分層
架 構對於我們iPhone和iPad開發有著很現實的意義。如果我們要編寫一個基於iOS(iPhone和iPad兩個平台)“My備忘錄”應用, 它具有:增加、刪除和查詢備忘錄的準系統, “備忘錄”應用使用案例圖,分層設計之後,展示層可以有不同iPhone版和iPad版本,而且商務邏輯層、數 據持久層和資訊系統層都可以公用。這樣可以大大減少我們的工作量,這就是分層設計的好處。