999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Barracuda架構(gòu)的SOA開發(fā)模型研究

2008-12-31 00:00:00
電腦知識與技術(shù) 2008年33期

摘要:該文在對EOS開發(fā)中存在的一些問題進行分析和對Barracuda架構(gòu)深入研究的基礎(chǔ)上,提出了一個基于Barracuda架構(gòu)的SOA開發(fā)模型,以解決傳統(tǒng)EOS開發(fā)中的效率問題,并對如何實現(xiàn)基于Barracuda架構(gòu)的SOA開發(fā)模型進行了較詳細的分析。

關(guān)鍵詞:Barracuda;EOS;XMLC;SOA開發(fā)模型

中圖分類號:TP311文獻標識碼:A文章編號:1009-3044(2008)33-1413-02

Analysis of SOA Developing-model Based on Barracuda

ZHOU Jiang

(Information of Judicature Department, SJPOPC, Deyang 618000, China)

Abstract: After the analysis of the problems appearing in the development of projects based on EOS and introduction of Barracuda framework, this paper proposes a SOA Developing-model based on Barracuda to solve these problems. And how to realize this EOS is recommended. The effects of this SOA Developing-model is analyzed, too.

Key words: Barracuda; EOS; XMLC; SOA Developing-model

1 引言

EOS(Enterprise Operating System)是面向構(gòu)件的SOA中間件,它基于J2EE平臺之實現(xiàn)完整的系統(tǒng)架構(gòu),是面向構(gòu)件的完整的互聯(lián)網(wǎng)應用體系[1]。構(gòu)件是EOS中最基本和最核心的元素,所有的工作都是圍繞構(gòu)件進行的。構(gòu)件之間采用XML總線技術(shù)來進行通信,使得構(gòu)件之間具備松散的耦合性,從而使系統(tǒng)具有良好的擴展性以及隨需應變的靈活性。

Barracuda是一個HTML DOM Component + Event/Listener結(jié)構(gòu)的WEB應用程序框架,是一種Model 2體系結(jié)構(gòu),但是它進一步采用了創(chuàng)建用戶界面的XMLC方法,而且提供了模型的事件-通知機制[2]。

2 EOS開發(fā)過程中存在的不足之處

通過采用構(gòu)件化的模式和利用系統(tǒng)提供的各種基礎(chǔ)構(gòu)件包,EOS確實能夠加快項目開發(fā)的進度,提高系統(tǒng)穩(wěn)定性和組件復用度,尤其是展現(xiàn)邏輯和業(yè)務邏輯的開發(fā)采用圖形化可視和托拽的方式,減少了開發(fā)人員的工作量,使開發(fā)人員可專注于對用戶需求和邏輯的理解,而不必花費大量時間進行邏輯代碼的編寫,這種圖形化的方式也極大地提高了程序的可讀性。

但是,頁面構(gòu)件開發(fā)對于大多數(shù)人來說就不那么輕松了,尤其是對于一些比較復雜的頁面。EOS主要采用JSP頁面作為頁面構(gòu)件[3],由于JSP固有的一些缺點[4],使得EOS頁面構(gòu)件的開發(fā)存在下面一些的問題:

1) 開發(fā)人員不僅要設(shè)計HTML代碼,還要編寫Java代碼,不僅要實現(xiàn)業(yè)務邏輯,同時還要考慮表示層的風格、樣式方面的問題,把表示層和邏輯層的工作集中到同一個開發(fā)人員身上,這必然增加開發(fā)人員的工作量。而且EOS系統(tǒng)還定義了大量自己的標簽,對于不是經(jīng)常使用EOS開發(fā)系統(tǒng)的人來說,要想熟練使用好這些標簽,也不是件容易的事。

2) 在EOS的開發(fā)調(diào)試環(huán)境中,只能對輸入輸出JSP頁面的數(shù)據(jù)進行查看,而對JSP頁面執(zhí)行過程中的內(nèi)部變化情況,則不能進行跟蹤調(diào)試。如果頁面本身不大,邏輯也不復雜,查找頁面上的BUG比較容易。但是在頁面變大了、邏輯也復雜的情況下,要在頁面中去找尋一個小的BUG,將是很令人頭疼的一件事。

3) html代碼與java代碼強耦合,一旦邏輯有所變化,可能牽涉大量頁面需要修改。

4) 如果需要對系統(tǒng)進行本地化的操作,就要為每個地區(qū)的每種語言建立一個頁面文件,然后由系統(tǒng)自動判斷采用哪個文件。

5) html代碼與Java代碼在程序中交錯出現(xiàn),再加上可能還有JavaScript代碼,使得代碼的可讀性降低。例如,在一個頁面中,需要根據(jù)用戶角色來決定是否顯現(xiàn)某些元素,這就要進行判斷,如果判斷地方較多,用戶角色也較多時,將在頁面中出現(xiàn)大量判斷語句(也可以采用EOS提供的邏輯判斷TAG),對于一個不熟悉業(yè)務邏輯的人來說,是不易看懂的。當然也可以為每個角色創(chuàng)建一個頁面,由展現(xiàn)邏輯決定顯示哪個頁面,但如果有很大一部分代碼都重復的話,必將造成資源的浪費。

6) 從美學的角度來說,頁面構(gòu)件由用戶界面HTML代碼和業(yè)務邏輯相關(guān)的java代碼組合在一起,頁面看起來雜亂無章。

圖1 Barracuda架構(gòu)

3 Barracuda框架架構(gòu)簡介

Barracuda架構(gòu)[3]將WEB應用程序劃分為若干層,每層實現(xiàn)不同功能,層與層之間相互獨立,具體見圖1。

1) 接收客戶端信息

接收客戶端發(fā)送的請求,并對請求信息進行初步處理,從中提取關(guān)于客戶端的信息(如客戶端瀏覽器類型、客戶端的本地化信息、對客戶機的響應輸出格式等),這些信息在整個請求-響應周期里面都可用。

2) 事件模型

事件模型主要用于處理客戶機和服務器通信。它負責將HTTP請求轉(zhuǎn)換為Java事件類,然后將產(chǎn)生的事件發(fā)布給監(jiān)聽器,并將監(jiān)聽器的處理結(jié)果返回給客戶機。

3) 表單映射和數(shù)據(jù)檢驗

將表單傳來的參數(shù)映射為Java類;為一些數(shù)據(jù)提供缺省值;對數(shù)據(jù)進行有效性檢驗等。

4) XMLC

XMLC是一個將HTML和XML 模板轉(zhuǎn)換為DOM對象的工具,傳統(tǒng)的表示層技術(shù)(如JSP)都是在標記語言內(nèi)部進行編程,XMLC則是對整個模板進行編程。

5) 本地化

Barracuda利用XMLC提供了一種獨有的方法來實現(xiàn)程序本地化。一般說來,在一個模板驅(qū)動的程序中,有兩種方法實現(xiàn)本地化,一種就是為不同的語言提供不同的模板,這種方法運行效率更高,但是維護比較麻煩;另一種方法就是在一個頁面中動態(tài)地確定怎樣本地化,這種方法運行效率更低,但是便于維護。而Barracuda提供的一種機制可以同時達到這兩個目標:效率高且便于維護。

6) 組件模型

開發(fā)人員在利用頁面模板生成DOM對象以后,需要向Dom結(jié)構(gòu)中填入數(shù)據(jù),但是對Dom的操作是比較底層而難于控制的,為解決這個難題,Barracuda提供了組件模型。組件模型具有兩個基本的特性:一個組件可以包含其他的組件,從而可以由簡單組件合成復雜組件, 這不僅提高了模塊的復用性,而且提高了整個系統(tǒng)的可擴展性;另一特性就是組件(包括其子組件)的渲染工作是由自己完成的。

4 基于Barracuda的EOS運行原理

經(jīng)研究,現(xiàn)設(shè)計基于Barracuda的SOA開發(fā)模型,其運行原理如圖2。

1) 從瀏覽器發(fā)起HTTP請求,提交到展現(xiàn)引擎。

2) 展現(xiàn)引擎將請求轉(zhuǎn)換為XML,并根據(jù)HTTP請求(構(gòu)件包.構(gòu)件.構(gòu)件邏輯.do)確定應該調(diào)用哪個展現(xiàn)邏輯,然后轉(zhuǎn)到處理展現(xiàn)構(gòu)件描述的展現(xiàn)邏輯。

3) 根據(jù)展現(xiàn)邏輯流程中定義的業(yè)務邏輯,傳入業(yè)務邏輯,并且送入相關(guān)的XML數(shù)據(jù)(從XML總線中)。

4) 業(yè)務引擎根據(jù)調(diào)用的業(yè)務邏輯中的流程調(diào)用相關(guān)的運算邏輯。

5) 對于需要訪問數(shù)據(jù)庫的操作通過數(shù)據(jù)引擎根據(jù)數(shù)據(jù)映射調(diào)用相關(guān)的數(shù)據(jù)庫,在調(diào)用過程中根據(jù)流程定義的事務進行相關(guān)的事務處理。

6) 業(yè)務引擎處理完邏輯流程后返回相關(guān)數(shù)據(jù)給展現(xiàn)層

7) 展現(xiàn)邏輯根據(jù)展現(xiàn)邏輯定義的頁面構(gòu)件,將HTTP請求轉(zhuǎn)發(fā)到指定的頁面構(gòu)件,并且傳入處理完的XML數(shù)據(jù)。這里的頁面構(gòu)件和EOS中的頁面構(gòu)件是不同的, EOS采用的頁面構(gòu)件一般是JSP,而基于Barracuda的EOS中的頁面構(gòu)件是一個根據(jù)由原始HTML文件生成的DOM對象、文檔模板和傳入的數(shù)據(jù)動態(tài)生成返回給用戶頁面的邏輯。

8) 頁面構(gòu)件根據(jù)相關(guān)信息生成HTML返回給客戶瀏覽器。

5 如何實現(xiàn)基于Barracuda的EOS

通過對EOS作一些改進,即可將實現(xiàn)基于Barracuda的SOA開發(fā)模型:

1) 將XMLC的轉(zhuǎn)換工具作為插件安裝在EOS開發(fā)環(huán)境中,通過它可以方便的實現(xiàn)從html文件到DOM對象的轉(zhuǎn)換工作,這個工作是很容易實現(xiàn)的。

2) 對頁面構(gòu)件進行改變,不采用JSP,改為采用Servlet[5]來實現(xiàn),利用Servlet來完成對文檔模板的操作,動態(tài)生成用戶需要的頁面。

3) 將Barracuda的組件庫引入EOS中,以充分利用組件的可組合性和自渲染性。

6 基于Barracuda的SOA開發(fā)模型解決了EOS的中存在的問題

下面分析一下采用基于Barracuda的EOS是如何解決2中所提到各種問題的。

1) 采用XMLC技術(shù)將表示層和邏輯層的工作完全分離開來,可分別交與html設(shè)計人員和程序員來完成,html設(shè)計人員只進行表示層的設(shè)計,程序員則專注于業(yè)務邏輯的實現(xiàn)。html設(shè)計人員定義表示層的模板,通過XMLC工具將其轉(zhuǎn)換為DOM對象,程序員只需通過代碼來填寫模板內(nèi)容,而不用關(guān)注表示層的樣式風格是如何的。利用組件模型,程序員可以向表示層中添加新元素,只需填入數(shù)據(jù),剩下的渲染工作可由組件自己完成。

2) 由于對數(shù)據(jù)的操作全部放在了頁面構(gòu)件中,而頁面構(gòu)件通常是一個Java的Serlet類,很容易通過現(xiàn)有平臺的調(diào)試器來監(jiān)視程序的運行過程,對程序進行調(diào)試,從而很容易確定程序中的BUG所在。

3) 由于html代碼與java代碼已經(jīng)完全分離開來,因而如果邏輯有所變化,只需要對邏輯層進行修改即可,而不用變動表示層的代碼。

4) 采用XMLC技術(shù)很容易實現(xiàn)系統(tǒng)本地化。此時,只需要一個頁面模板文件,然后為每種語言配置一個.properties文件,由頁面構(gòu)件根據(jù)獲取的瀏覽器端本地信息自動從對應的.prperties文件中讀取數(shù)據(jù)來填寫相關(guān)的元素內(nèi)容(通過采用多例模式很容易實現(xiàn))。如果增加了一個地區(qū)語言,只需簡單增加一個.porperties文件,同時在頁面構(gòu)件中進行一點小改動就行了,這比增加一個新頁面文件省事多了。

5) 由于HTML代碼與Java代碼完全分開,使頁面文件和邏輯層代碼的可讀性增強了[6],而且由于兩者分開以后,不存在代碼交叉出現(xiàn)的情況,文件內(nèi)容的美觀性也得到了保證。

7 下一步的工作

這次討論的基于Barracuda的EOS并未實現(xiàn)Barracuda中的事件模型,下一步的工作將研究如何將Barracuda的事件模型應用于EOS中。

8 結(jié)論

基于Barracuda的EOS可以解決EOS中頁面構(gòu)件難以編寫和可讀性較低的問題,而且可以在對EOS改動不大的情況下得到實現(xiàn),利用XMLC實現(xiàn)以servlet操縱頁面元素[7],克服由于JSP固有缺點帶來的頁面編程效率低下的問題,在EOS己有的面向構(gòu)件的開發(fā)模型基礎(chǔ)上,大大提高web編程生產(chǎn)率,是一種優(yōu)秀的SOA開發(fā)模型。

參考文獻:

[1] 上海普元信息技術(shù)有限責任公司.EOS白皮書[S].2007.

[2] http://www.barracudamvc.org/Barracuda/[EB/OL].

[3] 上海普元信息技術(shù)有限責任公司.EOS 5.3程序員教程[S].2006.

[4] 高敬.WEB應用程序-CGI到Web三層系統(tǒng)[M].北京:科學出版社,2004.

[5] Deitel H M.Javaweb服務高級教程[M].北京:機械工業(yè)出版社,2003.

[6] 吳其慶.JSP編程思想與實現(xiàn)[M].北京:冶金工業(yè)出版社,2003.

[7] 孫鑫.Java Servlet編程[M].2版.北京:中國電力出版社,2002.

主站蜘蛛池模板: 中文字幕av无码不卡免费| 福利在线一区| 91极品美女高潮叫床在线观看| 天天爽免费视频| 亚洲福利片无码最新在线播放| 91综合色区亚洲熟妇p| 99精品热视频这里只有精品7| 国产亚洲一区二区三区在线| 欧美在线视频不卡| 免费aa毛片| 在线观看无码a∨| 欧美视频在线第一页| 日韩精品一区二区三区大桥未久| 久久无码高潮喷水| 国产肉感大码AV无码| 午夜无码一区二区三区| 伊人91视频| 亚洲一区二区约美女探花| 国产麻豆福利av在线播放 | 伊人久久综在合线亚洲91| 在线一级毛片| 国产乱人伦偷精品视频AAA| 国产精品网址你懂的| 久久国产乱子伦视频无卡顿| 久久成人18免费| 国产成熟女人性满足视频| 亚洲三级成人| 91精品国产情侣高潮露脸| 成人在线观看一区| 人妻丰满熟妇αv无码| 国产精品3p视频| 国产激情在线视频| 天天综合色天天综合网| 午夜视频免费试看| 蜜桃视频一区| 日韩在线永久免费播放| 99久久精品国产精品亚洲| 亚洲免费成人网| 日本高清免费一本在线观看 | 国产swag在线观看| 思思热在线视频精品| 久久99国产乱子伦精品免| 欧美中文字幕在线二区| 玩两个丰满老熟女久久网| 欧美三級片黃色三級片黃色1| 亚洲色图欧美在线| 亚洲男人在线天堂| 国产综合欧美| 996免费视频国产在线播放| 久久免费精品琪琪| 国产日韩欧美成人| 亚洲精品片911| 日本高清在线看免费观看| 国产不卡一级毛片视频| 欧美国产视频| 日本亚洲欧美在线| 国产视频a| 2020最新国产精品视频| 婷婷色一二三区波多野衣| 国产美女自慰在线观看| 日韩欧美国产精品| 亚洲综合一区国产精品| 天天视频在线91频| 亚洲人成在线免费观看| 日韩欧美网址| 免费在线看黄网址| 日韩天堂在线观看| 国产一区在线观看无码| 国产乱人乱偷精品视频a人人澡| 国产在线第二页| 五月婷婷综合网| 污网站在线观看视频| 国产亚洲成AⅤ人片在线观看| 亚洲人成网站18禁动漫无码| 亚洲精品天堂在线观看| 国产一二三区视频| 欧洲熟妇精品视频| 免费人成网站在线观看欧美| 欧美日韩久久综合| 亚洲系列无码专区偷窥无码| 亚洲欧州色色免费AV| 免费人欧美成又黄又爽的视频|