軟體體系結構風格是描述某一特定應用領域中系統組織方式的慣用模式,層次系統風格即為其中一種,本文描述了一種適用於b/s、c/s混合場景的、基於層次系統風格的系統架構解決方案。
整個系統可劃分為儲存層、規約層、實現層、注入層、web展示應用層、web服務應用層、client應用層共計七個層次,其中儲存層一般對應關聯式資料庫,其餘六層是我們關注的重點。
圖1:層次架構圖示
將系統整體視作乙個解決方案(solution),觀察上圖可知,該解決方案主要包括下述九個開發專案(project):
demo.core:核心程式集,包含業務邏輯介面、資料訪問介面和實體類;
demo.managers:業務邏輯層的具體實現;
demo.daos:資料訪問層的具體實現,必要時可根據資料庫型別進一步細分;
demo.serviceproxy:web服務**,它將實現業務邏輯介面封裝web service的呼叫,是實現層的乙個特例,供客戶端(client)或其它應用程式直接引用;
demo.clientui:pc客戶端使用者介面,同理可引入demo.mobileui用作手機客戶端。
單元測試並未納入上述層次架構,在實際應用中應該再新增乙個demo.unittest開發專案,該專案將針對demo.core中定義的介面編寫測試用例,這些測試用例將用作demo.managers、demo.daos專案具體介面實現類的驗收標準。
「層次架構」中涉及的九個開發專案之間存在一定的編譯依賴關係,如下圖所示,箭頭標明了依賴性:
圖2:編譯依賴圖示
demo.core不依賴其他專案;demo.managers 、demo.daos、demo.ioc均依賴於demo.core;demo.controllers、demo.webservice依賴於demo.core和demo.ioc;demo.webui依賴於demo.controllers;demo.serviceproxy需要新增demo.webservice中web服務的引用,並非編譯依賴,故以虛線表示;demo.clientui依賴於demo.core和demo.ioc。
此外,demo.webui、demo.webservice的正常執行需要demo.managers和demo.daos的支撐,demo.clientui的正常執行需要demo.serviceproxy的支撐,這種支撐將以ioc的方式配置注入,因而不存在編譯依賴關係。
web展示應用層、web服務應用層、client應用層可統稱應用層,因而在應用發布商,存在web站點、web服務站點、client程式三個例項,且前兩個可以二合為一。
圖3:應用發布圖示
在應用系統開發過程中,對外部程式集的引用是一種典型現象,這裡將其歸納為實現層輔助工具、業務邏輯路由、面向切面附加三類。
實現層輔助工具:在資料訪問層(demo.daos)引入spring.data或hibernate處理資料的訪問。
業務邏輯路由:假設系統直接使用ldap使用者庫,則可以新增乙個實現了業務邏輯介面的介面卡,將使用者處理請求轉交給ldap伺服器處理。
面向切面附加:面向切面即aop,假設系統需要新增日誌功能記錄所有的業務邏輯操作,則可以新增乙個業務邏輯介面實現類(agentmanager),該類持有另外乙個介面實現類的引用(realmanager),agentmanager並未真正實現介面要求的方法,而是轉交給realmanager處理,轉交前後可加入日誌記錄**。
某些情況下,我們可能需要在客戶端本地快取部分資料,此時client程式將包含真正的業務邏輯和資料訪問功能(上文client涉及的業務請求是由服務**轉交web service處理的),client應用層架構將演變為下圖結構。
圖4:client演變圖示
儲存層一般採用檔案級的資料庫(例如sqlite),規約層、注入層、實現層的demo.managers 和demo.daos均為通用專案。注入層將同時控制注入遠端處理邏輯(demo.serviceproxy)和本地處理邏輯,demo.clientui根據需要自由選擇,或者直接做乙個業務邏輯介面卡實現自動路由。
本文旨在闡述一種松耦合的架構方案,指導思想是面向介面、生產者/消費者模式,規約層以介面為核心定義標準,實現層定位為生產者,應用層為消費者。在實際應用中,上文涉及的開發專案(project)均可進行適度的合併或拆分。
效能測試場景設計 混合業務場景下的指令碼比例控制
在某個業務場景中,包含資料建立和資料查詢兩項業務 現需考察資料建立和資料查詢兩項業務在併發比例為2 1 總併發量為100使用者情況下的混合響應時間。對混合比例的設定,可直接在指令碼中進行,即通過隨機函式rand實現,指令碼設計如下所示。int num action else lr end trans...
jmeter混合場景的多種實現方式比較
效能測試設計混合場景,一般有幾種方式,分別是每個場景設定乙個執行緒組,使用if控制器,使用吞吐量控制器。不同的方式實現機制不一樣,哪種方式相比而言更好呢?下面做一比較。u m 25,必應首頁 的if控 製器條件 設為 25,必應首頁的if控制器條件設為 num 25 必應首 頁的if 控制器條 件設...
jmeter混合場景的多種實現方式比較
效能測試設計混合場景,一般有幾種方式,分別是每個場景設定乙個執行緒組,使用if控制器,使用吞吐量控制器。不同的方式實現機制不一樣,哪種方式相比而言更好呢?下面做一比較。實現方式與if控制器大體一致,只是把if控制器換為吞吐量控制器,分別設定兩個控制器的吞吐量百分比為25 和75 也即1 3的併發比例...