不知不覺畢業已經四載有余,幾年來一直和太陽公公比著賽上班,披星戴月著下班。隨著年齡和資歷的增長,工作和生活的時間比值竟然越來越大,回首過去,偶爾也感嘆一聲,真是驢一樣的年華。
近年來中國的IT也發展的紅紅火火,人才輩出,網絡上好文比比皆是,但是卻沒有一篇是我的,真是悲哉…
女朋友走了,時間多了,百無聊賴之際,努力想為我慢慢逝去的青春留下一點可供回憶的東西,琢磨著寫一篇記錄我的一些火花的文章,也希望能給網絡上的朋友們提供一些參考,為祖國的IT業盡一點綿薄之力,便是我最大的心愿。
廢話少說,開始進入主題,我的火花是“建立一套快速構建面向服務的應用的應用生成環境,簡稱ACE(Application Creation
Environment)”以及對應的“應用執行環境(AEE,Application Execution Environment)”。
第一篇
面向服務的快速應用生成環境
案例和問題就不分析了,無非是什么支撐業務快速上線、快速響應用戶需求、降低開發成本、淘到第一桶金、抓住用戶的心、實現業務敏捷等等之流。每當做起這種事情就頭痛不已,但是領導又最喜歡看這種東西…
目標:
l 基于MDA的思想,建立一套端到端的開發環境,端到端指從前臺展現邏輯到后臺業務邏輯、數據持久邏輯、業務流程邏輯等。保守估計,期望至少能夠減少開發工作量的50%以上(本人一向比較低調)。
l 支撐面向服務的應用程序構建,不綁定特定實現環境。如,不綁定C++或者java等特定的實現方式。
l 不局限于某種特定的界面展現技術,如swing,web等。
l 不局限于服務的分布方式,如不要求服務一定在本地,可以在本地也可以部署在世界各地。
姑且按照我的愚見,對一個典型的應用參考DDD的理念作一下抽象,后面全部按照這種理解來推導ACE應是何物:

一個典型的企業應用的元模型
從上圖中,可以看出,DDD中的主要類型的領域對象都在:Repository,Service,Entity,
Process也是一種特化的service。還有一個東東:DataView,不知道叫它什么好,先不費腦筋去給他取名了。
下面一一解釋這些東東的含義:
Name
|
Introduction
|
Association
|
Remark
|
Data Entity
數據實體
|
表示企業應用中的數據實體,比如訂單管理系統中的訂單對象就是一個數據實體。
|
數據實體之間可能有關聯。比如訂單對象關聯多個訂單項對象。
|
|
Data View
數據視圖
|
表示數據實體的一個視圖,也可能是多個有關聯的數據實體的一個視圖。類似于DB中的視圖的概念。
|
數據視圖關聯一個或者多個數據實體。無須多解釋,參考數據庫視圖就可以了。
|
|
Service
服務
|
表示企業應用中的服務對象。比如訂單管理系統中的訂單服務。服務的粒度可大可小,原子服務也可以聚合成業務服務。類似SCA中的服務聚合。
|
服務可能聚合服務形成大粒度服務。服務可能接收數據對象,輸出另外的數據對象。
|
服務不能包含有與特定應用上下文相關的狀態信息,不然影響復用。每個服務對服務的使用者來說是無狀態的。
|
Process
流程
|
各種各樣的流程的頂層抽象,流程也是一種特殊的服務
|
所有的流程都將有服務參與。因此流程與服務有依賴關系。
|
|
Operation Process
操作流程
|
表示一個業務邏輯處理過程,比如我們計算一個四則混合運算表達式的時候,心里會先分解城一個一個的計算單元,然后先算某個單元再算某個單元,算完收工。這一個一個的有次序執行的計算單元就是一個操作流程。這種流程的生命周期很短,流程運行數據不需要持久化,一次調用就走完,不走完就完全失敗。
|
操作流程可能與數據實體和服務關聯,比如做四則混合運算的操作流程,要接受數據,接收了數據之后呢,要調用各種加減乘除服務來做計算單元的運算。
|
|
Business Process
業務流程
|
業務流程表示數據實體的一個有次序的處理過程。這種流程表示人工協作處理一件事情的一個過程。就是常用的工作流的概念。
|
業務流程肯定要和數據實體、服務關聯的。這個就不詳細說明了。
|
|
Orchestration Process
編排流程
|
編排各應用系統暴露的服務達成業務目標,一種實現就是BPEL
|
編排流程肯定要和服務和數據實體關聯,也不多說,看BPEL規范就是了
|
|
View Process
視圖流程
|
數據實體通過數據視圖來展現,而數據視圖之間的變遷,以及數據視圖與服務之間的關聯則由視圖流程來表述。視圖流程的一種實現技術就是頁面流,不過目前的頁面流都綁定了web,其實數據和服務的展現(接入)方式有很多種,比如IVR接入,web接入,swing接入等等。
|
和服務和數據實體關聯。
|
|
Signaling process
|
信令流,表示電信業務中的信令交互流程
|
跟服務和數據實體關聯
|
|
Repository
倉庫
|
DDD中的倉庫對象,保存數據實體的領域對象。
|
與數據對象關聯。被服務對象調用。
|
|
DAO
數據訪問對象
|
負責從某種特定的存儲介質中存儲和retrieve數據實體。用于避免倉儲對象依賴特定的存儲介質,如DB,文件系統等。
|
是數據對象關聯,被倉儲對象調用。
|
|
Permission
權限
|
指對數據實體能夠執行的操作的權限,如增、刪、改、查,可能要控制到數據實體的屬性粒度。也有可能對服務有訪問權限控制,即允不允許用戶執行某個服務。
|
權限跟數據實體或服務關聯。
|
|