快速構(gòu)建面向服務(wù)的應(yīng)用-1
不知不覺畢業(yè)已經(jīng)四載有余,幾年來一直和太陽公公比著賽上班,披星戴月著下班。隨著年齡和資歷的增長,工作和生活的時間比值竟然越來越大,回首過去,偶爾也感嘆一聲,真是驢一樣的年華。
近年來中國的IT也發(fā)展的紅紅火火,人才輩出,網(wǎng)絡(luò)上好文比比皆是,但是卻沒有一篇是我的,真是悲哉…
女朋友走了,時間多了,百無聊賴之際,努力想為我慢慢逝去的青春留下一點可供回憶的東西,琢磨著寫一篇記錄我的一些火花的文章,也希望能給網(wǎng)絡(luò)上的朋友們提供一些參考,為祖國的IT業(yè)盡一點綿薄之力,便是我最大的心愿。
廢話少說,開始進入主題,我的火花是“建立一套快速構(gòu)建面向服務(wù)的應(yīng)用的應(yīng)用生成環(huán)境,簡稱ACE(Application Creation Environment)”以及對應(yīng)的“應(yīng)用執(zhí)行環(huán)境(AEE,Application Execution Environment)”。
第一篇 面向服務(wù)的快速應(yīng)用生成環(huán)境
案例和問題就不分析了,無非是什么支撐業(yè)務(wù)快速上線、快速響應(yīng)用戶需求、降低開發(fā)成本、淘到第一桶金、抓住用戶的心、實現(xiàn)業(yè)務(wù)敏捷等等之流。每當(dāng)做起這種事情就頭痛不已,但是領(lǐng)導(dǎo)又最喜歡看這種東西…
目標(biāo):
l 基于MDA的思想,建立一套端到端的開發(fā)環(huán)境,端到端指從前臺展現(xiàn)邏輯到后臺業(yè)務(wù)邏輯、數(shù)據(jù)持久邏輯、業(yè)務(wù)流程邏輯等。保守估計,期望至少能夠減少開發(fā)工作量的50%以上(本人一向比較低調(diào))。
l 支撐面向服務(wù)的應(yīng)用程序構(gòu)建,不綁定特定實現(xiàn)環(huán)境。如,不綁定C++或者java等特定的實現(xiàn)方式。
l 不局限于某種特定的界面展現(xiàn)技術(shù),如swing,web等。
l 不局限于服務(wù)的分布方式,如不要求服務(wù)一定在本地,可以在本地也可以部署在世界各地。
姑且按照我的愚見,對一個典型的應(yīng)用參考DDD的理念作一下抽象,后面全部按照這種理解來推導(dǎo)ACE應(yīng)是何物:
一個典型的企業(yè)應(yīng)用的元模型
從上圖中,可以看出,DDD中的主要類型的領(lǐng)域?qū)ο蠖荚冢?/span>Repository,Service,Entity, Process也是一種特化的service。還有一個東東:DataView,不知道叫它什么好,先不費腦筋去給他取名了。
下面一一解釋這些東東的含義:
Name |
Introduction |
Association |
Remark |
Data Entity 數(shù)據(jù)實體 |
表示企業(yè)應(yīng)用中的數(shù)據(jù)實體,比如訂單管理系統(tǒng)中的訂單對象就是一個數(shù)據(jù)實體。 |
數(shù)據(jù)實體之間可能有關(guān)聯(lián)。比如訂單對象關(guān)聯(lián)多個訂單項對象。 |
|
Data View 數(shù)據(jù)視圖 |
表示數(shù)據(jù)實體的一個視圖,也可能是多個有關(guān)聯(lián)的數(shù)據(jù)實體的一個視圖。類似于DB中的視圖的概念。 |
數(shù)據(jù)視圖關(guān)聯(lián)一個或者多個數(shù)據(jù)實體。無須多解釋,參考數(shù)據(jù)庫視圖就可以了。 |
|
Service 服務(wù) |
表示企業(yè)應(yīng)用中的服務(wù)對象。比如訂單管理系統(tǒng)中的訂單服務(wù)。服務(wù)的粒度可大可小,原子服務(wù)也可以聚合成業(yè)務(wù)服務(wù)。類似SCA中的服務(wù)聚合。 |
服務(wù)可能聚合服務(wù)形成大粒度服務(wù)。服務(wù)可能接收數(shù)據(jù)對象,輸出另外的數(shù)據(jù)對象。 |
服務(wù)不能包含有與特定應(yīng)用上下文相關(guān)的狀態(tài)信息,不然影響復(fù)用。每個服務(wù)對服務(wù)的使用者來說是無狀態(tài)的。 |
Process 流程 |
各種各樣的流程的頂層抽象,流程也是一種特殊的服務(wù) |
所有的流程都將有服務(wù)參與。因此流程與服務(wù)有依賴關(guān)系。 |
|
Operation Process 操作流程 |
表示一個業(yè)務(wù)邏輯處理過程,比如我們計算一個四則混合運算表達式的時候,心里會先分解城一個一個的計算單元,然后先算某個單元再算某個單元,算完收工。這一個一個的有次序執(zhí)行的計算單元就是一個操作流程。這種流程的生命周期很短,流程運行數(shù)據(jù)不需要持久化,一次調(diào)用就走完,不走完就完全失敗。 |
操作流程可能與數(shù)據(jù)實體和服務(wù)關(guān)聯(lián),比如做四則混合運算的操作流程,要接受數(shù)據(jù),接收了數(shù)據(jù)之后呢,要調(diào)用各種加減乘除服務(wù)來做計算單元的運算。 |
|
Business Process 業(yè)務(wù)流程 |
業(yè)務(wù)流程表示數(shù)據(jù)實體的一個有次序的處理過程。這種流程表示人工協(xié)作處理一件事情的一個過程。就是常用的工作流的概念。 |
業(yè)務(wù)流程肯定要和數(shù)據(jù)實體、服務(wù)關(guān)聯(lián)的。這個就不詳細說明了。 |
|
Orchestration Process 編排流程 |
編排各應(yīng)用系統(tǒng)暴露的服務(wù)達成業(yè)務(wù)目標(biāo),一種實現(xiàn)就是BPEL |
編排流程肯定要和服務(wù)和數(shù)據(jù)實體關(guān)聯(lián),也不多說,看BPEL規(guī)范就是了 |
|
View Process 視圖流程 |
數(shù)據(jù)實體通過數(shù)據(jù)視圖來展現(xiàn),而數(shù)據(jù)視圖之間的變遷,以及數(shù)據(jù)視圖與服務(wù)之間的關(guān)聯(lián)則由視圖流程來表述。視圖流程的一種實現(xiàn)技術(shù)就是頁面流,不過目前的頁面流都綁定了web,其實數(shù)據(jù)和服務(wù)的展現(xiàn)(接入)方式有很多種,比如IVR接入,web接入,swing接入等等。 |
和服務(wù)和數(shù)據(jù)實體關(guān)聯(lián)。 |
|
Signaling process |
信令流,表示電信業(yè)務(wù)中的信令交互流程 |
跟服務(wù)和數(shù)據(jù)實體關(guān)聯(lián) |
|
Repository 倉庫 |
DDD中的倉庫對象,保存數(shù)據(jù)實體的領(lǐng)域?qū)ο蟆?/span> |
與數(shù)據(jù)對象關(guān)聯(lián)。被服務(wù)對象調(diào)用。 |
|
DAO 數(shù)據(jù)訪問對象 |
負責(zé)從某種特定的存儲介質(zhì)中存儲和retrieve數(shù)據(jù)實體。用于避免倉儲對象依賴特定的存儲介質(zhì),如DB,文件系統(tǒng)等。 |
是數(shù)據(jù)對象關(guān)聯(lián),被倉儲對象調(diào)用。 |
|
Permission 權(quán)限 |
指對數(shù)據(jù)實體能夠執(zhí)行的操作的權(quán)限,如增、刪、改、查,可能要控制到數(shù)據(jù)實體的屬性粒度。也有可能對服務(wù)有訪問權(quán)限控制,即允不允許用戶執(zhí)行某個服務(wù)。 |
權(quán)限跟數(shù)據(jù)實體或服務(wù)關(guān)聯(lián)。 |
posted on 2008-11-07 23:50 迷途書童 閱讀(1719) 評論(2) 編輯 收藏 所屬分類: 隨感 、系統(tǒng)設(shè)計 、java應(yīng)用 、SOA