上篇咱們分析了AgileEAS.NET平臺的DAL層的設計與相關的使用說明分析,本篇咱們來分析下業務邏輯層/服務層的設計與分析,而且分析下如何抽離單獨的業務邏輯設計模式
層,分離出單獨的分佈式訪問服務支持。咱們主要是分析如何設計出嚴格的基於現有DAL層之上的BLL->服務層>UI層這樣的分層設計模式,本系列中的藥店系統則採用的分層架構
方式是DAL->BLL層->UI層,下面咱們來分析下這2種的不一樣的實現方案及代碼的組織,而且分析關於分佈式服務支持的寫法和內部的實現原理分析。分佈式
一、DAL->BLL層->服務層->UI層。函數
二、DAL->BLL層->UI層。網站
三、AgileEAS.NET平臺的分佈式訪問支持的契約分析。spa
咱們先來看看你們比較關係的將業務層與服務層職責相分類的實現方案。.net
經過上圖咱們知道這個分層架構中每層的職責,那麼下面咱們將會對每層的職責進行一個嚴格的劃分和設計說明:設計
既然DAL層咱們不添加任何的內容,那麼咱們把跟該實體相關的業務邏輯添加到BLL層,下面咱們來看看。orm
有了相關的業務邏輯層咱們就能夠在服務層完成一些業務邏輯流程的組織:能夠理解成服務層就是經過外觀模式來控制業務邏輯流程的外觀層。blog
綜上所述,服務層就至關於一個業務邏輯流程的粗粒度的接口,固然咱們在服務層與業務邏輯層之間經過DTO來傳輸數據。
關於上述架構的組織,我會在後續的案例場景中單獨的寫出一些使用該架構的案例結合AigleEAS.NET來完成。
本節來分析下,咱們之間經過BLL層來完成相關業務邏輯及業務流程的組織,例如上篇講述的關於藥品出庫操做時的業務流程管理。
上圖中描述了業務邏輯層的職責:
咱們來看看藥品出庫操做時的相關業務邏輯層業務:
二、咱們看到了每一個業務邏輯中的寫法與平時咱們的寫法差異不大,下面咱們來解析下內部的具體實現原理和使用分析:
三、上面咱們尚未查看如何使用事務來執行批量操做呢?這也是該AgileEAS.NET平臺的亮點之一,經過委託來執行事務,很方便的書寫批量的事務操做。
四、下面咱們來看看具體的調用事務執行的函數定義與委託定義:
函數的委託定義:
五、調用事務執行方法定義:
六、經過上面咱們就知道了委託事務的執行思路了,能夠參考着本身實現一遍,固然可能還有更好的解決方案,不過我以爲這樣的寫法,寫起來比較不錯。
本節咱們來分析下AgileEAS.NET平臺實現分佈式訪問的原理解析,固然具體的實現,我這裏可能也給不出具體的實現代碼。
目前平臺主要是支持以下幾種格式的分佈式訪問:
下面咱們來一步步分析分佈式訪問的內部實現原理
一、下面咱們來分析下這個服務IOC容器的內容:
二、查看服務組件基類的相關定義:
三、查看「SessionObject的內部定義」
四、經過上面咱們知道,AgileEAS.NET平臺使用MarshalByRefObject來支持分佈式訪問,因此下面咱們只須要實現好業務邏輯層中的業務邏輯便可。關於具體的使用及
分佈式服務的配置,會在後面的應用部署模塊中詳細的闡述如何部署分佈式訪問。
本篇也是分析了關於分佈式訪問的實現方案和原理進行了分析,關於具體的配置和如何使用分佈式服務等,後續會在模塊的應用部署及配置的環節中詳細的闡述,固然
因爲本人的水平有限,或者是對AgileEAS.NET的研究程度不深入,因此部分講述的不清楚或者不明白,還請你們批評指出。
若是您在使用AgileEAS.NET開發平臺中有什麼問題,請使用以下幾種聯繫方式或者溝通方式。
一、郵箱方式:
魏瓊東: mail.james@qq.com 手機:18629261335 博客:http://eastjade.cnblogs.com/
殷長波:549558408@qq.com 博客: http://www.cnblogs.com/onmyway/
何戈洲:hegezhou_hot@163.com 博客:http://www.cnblogs.com/hegezhou_hot/
二、QQ交流羣:
AgileEAS.NET平臺交流羣:120661978(超級羣)[新建] AgileEAS.NET平臺交流羣:125643764(高級羣)[新建] AgileEAS.NET平臺交流羣:147168308(高級羣)[新建]