在以前的隨筆中,介紹了一些關於Agile Framework的功能部分的特點,不過都還是一些“點”的介紹,這次介紹一下Agile Framework的整體模組組成結構,讓大家對Agile Framework有一個從點到面的瞭解。
Agile Framework目前主要包含兩個部分:用戶端部分和伺服器部分。在伺服器端,AF的採用了Castle作為核心的的IoC容器,由於採用了這種輕量級容器技術,使得AF可以很容易的支援“POJO”業務對象(這是Java裡面的說法,不知道在.Net裡面同樣的意思應該怎麼叫)。而在用戶端,AF採用的是Composite UI Application Block,它是一個結構非常酷的SmartClient架構,而且本身也帶有一個IoC容器。由於採用了CAB技術,使AF擁有了非常強大靈活的介面外掛程式能力。
Caslte擁有一個非常強大的IoC核心以及MonoRails Web架構和ActiveRecord資料架構,但是缺少一個強大的SmartClient用戶端。而CAB有很強大的用戶端架構,卻沒有相應的伺服器部分。在一個公司專屬應用程式架構中,往往需要同時構建伺服器端和用戶端應用,假如單獨的使用它們的話會非常麻煩。
AF對這兩個容器架構都做了許多額外的擴充工作,把它們封裝起來,使得這兩個架構無縫的融合為一體。同時在這個基礎之上做了許多對構件公司專屬應用程式程式非常有協助的服務整合和擴充。
這幅圖表述了Agile Framework的基本模組結構和開發模式,Agile Framework提供了通明的分散式運算能力,用戶端組件和伺服器端組件實際上雖然處於不同的容器之中,但是對組件來說,Agile Framework提供了幾乎完全相同的容器模型,用戶端組件訪問伺服器端服務就好像訪問本地容器中的服務一樣。
開發人員在Agile Framework架構上編寫應用程式,目前可以獲得如下好處:
- 分布式容器。只需要編寫用戶端介面控制項和伺服器端的商務邏輯組件,並“插入”到架構之中就可以。由架構提供依賴注入能力。並且依賴關係可以是分布式的,比如你可以在用戶端外掛程式中聲明一個伺服器端組件的依賴請求。
- 分布式事件。無論是伺服器端還是用戶端組件,只要是放到Agile Framework中,所有的組件都獲得了完整的通訊能力,除了可以請求組件的服務外,還可以互相之間訂閱事件。並且事件是完全解耦的,並不需要顯式的掛接事件,只需要聲明一下事件寄件者和訂閱者的標記,Agile Framework會自動的串連有對應關係的事件。同樣,事件也是分布式的,你可以在用戶端組件中訂閱伺服器端的事件。
- 透明的底層傳輸機制。目前在Agile Framework中同時支援兩種資料轉送方式:Web Service和Remoting。你可以根據實際使用環境的需要靈活的配置。你可以在Intranet中將傳輸方式配置成Remoting,提高效能。或者將傳輸方式配置成Web Service,以滿足通過企業防火牆的需要。而這一切對組件來說都是透明的,完全不用關心底層具體的傳輸方式。甚至你可以配置成“自動檢測”,架構首先嘗試採用Remoting,如果不能用Remoting就自動切換成Web Service。
- 自動離線處理機制。不需要再去編寫複雜的離線處理任務,Agile Framework已經提供了一套完善的離線處理機制,採用Agile Framework編寫的應用程式可以非常輕易的擁有離線處理功能。讓你的應用程式擁有非常好客戶體驗。
- 常用服務和類庫。與Castle和CAB不一樣,Agile Framework是一個公司專屬應用程式開發架構,所以內建了許多協助開發企業級應用程式的服務和類庫,比如Log Service、事務服務、工作流程服務、快取服務、安全認證服務、異常管理服務等等。此外還提供了大量的非常有用的協助類庫(Helper),比如單位轉換、動態排序、運算式計算、日期轉換、加密壓縮、檔案操作等等在企業開發中會頻頻使用到的基礎功能。
對Agile Framework的結構總體概覽就介紹到這裡,以後會詳細的介紹Agile Framwork的一些內部技術細節以及架構所提供的各種服務和Helper類的功能介紹和使用方法。
Agile Framework是一個基於.Net 2.0技術的開源企業開發架構,目前Agilelabs Team正在加緊開發中,期望能儘早的放出第一個版本。希望瞭解更多資訊請訪問敏捷實驗室。