《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 其他 > 業(yè)界動(dòng)態(tài) > 使用Avalon編程

使用Avalon編程

2008-12-27
作者:齊好宗

??? Avalon是以一定數(shù)量的為了提高代碼質(zhì)量、重用度和可維護(hù)性的核心的編程習(xí)慣和設(shè)計(jì)模式作為基礎(chǔ)的。例如:面向服務(wù)編程(Service oriented Programming)、反向控制(Inversion of Control)和分離考慮(Separation of Concerns)等作為一個(gè)構(gòu)建服務(wù)器端組件(server-side components)的框架。本文對(duì)如何使用Avalon框架編程作了簡(jiǎn)要介紹,希望能對(duì)進(jìn)行服務(wù)器端開(kāi)發(fā)的技術(shù)人員一些啟示。
1. Avalon的重要子項(xiàng)目
??? 為了讓你更好的理解Avalon框架,下面簡(jiǎn)要的介紹以下它的重要子項(xiàng)目從而使你對(duì)Avalon整體框架有一個(gè)初步的認(rèn)識(shí)。
1.1 Framework
??? Avalon Framework是Avalon大傘下的所有其它項(xiàng)目的基礎(chǔ)。它定義了接口、契約(contracts)和Avalon的缺省實(shí)現(xiàn)。Framework將大部分工作置于其中,因此也是最為成熟的項(xiàng)目。
1.2 Excalibur
??? Avalon Excalibur是一組服務(wù)器端組件,您可以在自己的項(xiàng)目中使用它們。它包括了池(pooling)的實(shí)現(xiàn)、數(shù)據(jù)庫(kù)連接管理和其它一些組件管理的實(shí)現(xiàn)。
1.3 Phoenix
??? Avalon Phoenix是服務(wù)器核心,它管理服務(wù)(Service,實(shí)現(xiàn)為服務(wù)器端組件,稱(chēng)作Block)的發(fā)布和執(zhí)行。
1.4 Cornerstone
??? Avalon Cornerstone是一組Block或服務(wù),這些Block可以布署在Phoenix環(huán)境中。這些Block包括了socket管理和Block之間的任務(wù)調(diào)度。
2.Avalon的原理和模式
?? ?Avalon框架中運(yùn)用了許多新的編程觀點(diǎn)和理念,下面一一的作介紹。
2.1反向控制(Inversion of Control,IOC)
??? 反向控制的概念是指組件總是由外部進(jìn)行管理的。這個(gè)短語(yǔ)是由Brian Foote在他的一篇論文中最先使用的(參看http://www.laputan.org/drc/drc.html)。組件所需的一切通過(guò)Contexts、Configurations和Loggers的方式賦予組件。實(shí)際上,組件生命周期中的每個(gè)階段都是由創(chuàng)建組件的代碼所控制的。當(dāng)您使用這種模式時(shí),就實(shí)現(xiàn)了一種組件與您的系統(tǒng)安全交互的方法
2.?2面向組件的編程(Component Oriented Programming ,COP)
??? 面向組件的編程是把系統(tǒng)分割成一些組件或設(shè)施的一種思想。每種設(shè)施都有一個(gè)工作接口和圍繞該接口的契約。這種方式允許容易地更換組件的實(shí)例,同時(shí)不影響系統(tǒng)其它部分的代碼。
面向?qū)ο?/a>" title="面向?qū)ο?>面向?qū)ο?/a>編程(Object Oriented Programming ,OOP)和COP的主要區(qū)別在于集成的層次。COP系統(tǒng)的復(fù)雜性更容易管理,這得益于類(lèi)之間更少的相互依賴(lài)。這提高了代碼重用的程度。
??? COP的主要好處之一是修改項(xiàng)目代碼的一些部分不會(huì)破壞整個(gè)系統(tǒng)。另一個(gè)好處是可以有某組件的多種實(shí)現(xiàn),并可以在運(yùn)行時(shí)刻進(jìn)行選擇。
2.3面向服務(wù)的編程(Service Oriented Programming ,SOP)
??? 面向服務(wù)的編程的思想是把系統(tǒng)劃分為由系統(tǒng)提供的一些服務(wù)。
??? Avalon的 Phoenix把每一種要提供的設(shè)施看作是一項(xiàng)服務(wù),由特定接口和相關(guān)契約組成。服務(wù)的實(shí)現(xiàn)被稱(chēng)為Block。一個(gè)服務(wù)器程序是由多種服務(wù)組成的,認(rèn)識(shí)這一點(diǎn)很重要。以郵件服務(wù)器為例,它會(huì)有協(xié)議處理服務(wù)、認(rèn)證和授權(quán)服務(wù)、管理服務(wù)和核心郵件處理服務(wù)等。
??? Avalon的 Cornerstone提供了一些低層的服務(wù),您可以在自己的系統(tǒng)中加以利用。提供的服務(wù)包括連接管理、socket管理、參與者/角色管理和調(diào)度等。我們?cè)谶@里介紹到服務(wù)是因?yàn)樗c把我們的假定系統(tǒng)分解為不同設(shè)施的過(guò)程有關(guān)。
3.用Avalon Phoenix開(kāi)發(fā)服務(wù)器應(yīng)用
??? Phoenix 是在Avalon Framework 之上的微內(nèi)核設(shè)計(jì)和實(shí)現(xiàn)。它提供了一些工具用來(lái)管理服務(wù)器應(yīng)用環(huán)境。這些工具包括日志管理,類(lèi)裝載(classloading),線(xiàn)程管理和安全。它的后續(xù)版本將有條件的支持額外工具,例如:中央
服務(wù)管理" title="服務(wù)管理">服務(wù)管理,服務(wù)池和其他一些縮短產(chǎn)品進(jìn)入市場(chǎng)時(shí)間的工具。Phoenix的API定義了匯集服務(wù)器組件和創(chuàng)建服務(wù)器的標(biāo)準(zhǔn)方法。
??? Phoenix默認(rèn)的管理工具或者稱(chēng)之為引擎是利用Avalon Framework及基本設(shè)計(jì)原理和編程習(xí)慣建造而成的。JMX MBean 服務(wù)是Phoenix分布的一部分,用于管理Phoenix服務(wù)器內(nèi)核及Phoenix應(yīng)用程序" title="應(yīng)用程序">應(yīng)用程序。客戶(hù)端" title="客戶(hù)端">客戶(hù)端不能通過(guò)RMI 適應(yīng)器連接到MBean。
Phoenix應(yīng)用程序稱(chēng)為SARs(服務(wù)器檔案),它被配置在一個(gè)預(yù)配置的目錄內(nèi)。在運(yùn)行SARs檔案以前,Phoenix核心可以解包并驗(yàn)證檔案的內(nèi)容
?? 下面介紹一個(gè)實(shí)際入門(mén)的類(lèi)似Hello World的例子,該工程名為sckServer。進(jìn)行開(kāi)發(fā)前請(qǐng)首先到http://avalon.apache.org/ 下載所需的jar。工程是用ant組織的,該工程的目錄結(jié)構(gòu)如下圖所示:

3.1 第一步:定義服務(wù)
??? 在Avalon中,每一個(gè)組件一被選中或者由角色重新得到,它就和一個(gè)角色(role)相關(guān)聯(lián)的。對(duì)于我們所定義的sckService服務(wù),所有的角色接口如下:
package org.my;
public interface sckService
{ ? String ROLE="org.my.sckService";
public void postMessage(String msg);
}
3.2 第二步:實(shí)現(xiàn)服務(wù)
??? 在Server類(lèi)中實(shí)現(xiàn)了sckService接口。Avalon Framework則實(shí)現(xiàn)了幾個(gè)生命周期以及線(xiàn)程接口的定義。盡管Avalon實(shí)現(xiàn)這些是不可見(jiàn)的,但運(yùn)用的Scheduler和SocketManager組件卻是Conerstone的一部分。
?//導(dǎo)入一些必要的包。
public class Server extends AbstractLogEnabled
implements sckService, Block, Contextualizable, Composable, Configurable, Initializable, ConnectionHandlerFactory, ConnectionHandler
{? static protected Configuration CONFIGURATION;
?? protected SocketManager?????? m_socketManager;
?? protected ConnectionManager?? m_connectionManager;
?? protected BlockContext??????? m_context;
?? protected InetAddress???????? m_bindTo;
?? protected int???????????????? m_port;
?? public ConnectionHandler createConnectionHandler() throws Exception
{??? final Server handler = new Server();
?????? setupLogger( handler );
?????? return handler;
?? }
?? public void initialize() throws Exception
{? ……
? }
public void compose( final ComponentManager componentManager ) throws ComponentException
{? getLogger().info("Server.compose()");
??????? m_socketManager = (SocketManager)componentManager.lookup( SocketManager.ROLE );
??????? m_connectionManager = (ConnectionManager)componentManager.lookup( ConnectionManager.ROLE );
??? }
public void configure( final Configuration configuration ) throws ConfigurationException
{? ……
}
public void contextualize( final Context context )
{? m_context = (BlockContext)context;
??? }
public void handleConnection( final Socket socket ) throws IOException
{? DataInputStream is = new DataInputStream(socket.getInputStream());
??????? OutputStream os = new DataOutputStream(socket.getOutputStream());
??? }
public void releaseConnectionHandler( ConnectionHandler connectionHandler )
{ }
public void postMessage( String fromUsername)
{?? ……
}
}
3.3第三步:配置描述文件
??? 由于篇幅所限,具體如何配置請(qǐng)參看http://avalon.apache.org/phoenix/ 可獲得十分詳細(xì)得信息。
3.?4打包為SAR文件
??? 應(yīng)用程序必須打包為SAR文件,Phoenix才可以讀取。SAR文件中必須包括assembly.xml;config.xml和environment.xml三個(gè)配置文件。
3.5配置系統(tǒng)
??? 將打好得sckServer.sar文件放置在phoenix的apps目錄下,當(dāng)phoenix啟動(dòng)時(shí)它會(huì)自動(dòng)讀取。
4 結(jié)束語(yǔ)
??? 中國(guó)互聯(lián)網(wǎng)絡(luò)信息中心(CNNIC)《中國(guó)互聯(lián)網(wǎng)絡(luò)發(fā)展?fàn)顩r" title="發(fā)展?fàn)顩r">發(fā)展?fàn)顩r統(tǒng)計(jì)報(bào)告》表明,中國(guó)網(wǎng)民已經(jīng)從1997年1月的62萬(wàn)人增至2003年1月的5910萬(wàn)人,另外我國(guó)上網(wǎng)計(jì)算機(jī)數(shù)、域名數(shù)、網(wǎng)站數(shù)等參數(shù)都有了較大的增長(zhǎng)。互聯(lián)網(wǎng)令人難以置信的飛速發(fā)展,帶來(lái)了全新的生活、工作和學(xué)習(xí)方式。有網(wǎng)絡(luò)就不可能沒(méi)有服務(wù),因而服務(wù)器端軟件開(kāi)發(fā)已經(jīng)成為十分重要的話(huà)題。Avalon以其自身的優(yōu)勢(shì)必會(huì)引起世人的矚目。由于篇幅所限,還有很多的內(nèi)容不能一一介紹深表遺憾。
參考文獻(xiàn):
[1] http://avalon.apache.org ,Avalon官方網(wǎng)站
[2] http://www.oreillynet.com ,Oreilly’s 主頁(yè)
[3] http://www-900.ibm.com/developerWorks/cn ,IBM中文開(kāi)發(fā)者論壇

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無(wú)法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問(wèn)題,請(qǐng)及時(shí)通過(guò)電子郵件或電話(huà)通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話(huà):010-82306118;郵箱:aet@chinaaet.com。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
欧美96在线丨欧| 国产美女精品| 久久黄色小说| 亚洲欧美日本日韩| 亚洲婷婷综合色高清在线| 亚洲精品一区二区三区在线观看 | 亚洲欧美激情视频| 亚洲无玛一区| 亚洲视频在线免费观看| 亚洲美女av在线播放| 亚洲精品偷拍| 亚洲美女毛片| 在线亚洲伦理| 亚洲午夜激情网页| 亚洲一区在线观看免费观看电影高清| 亚洲午夜在线观看| 亚洲欧美日韩区| 欧美在线视频观看| 亚洲国产导航| 亚洲精品在线观看免费| 日韩一区二区免费看| 中文精品视频| 午夜精品理论片| 欧美在线一二三| 久热精品视频| 欧美精品免费观看二区| 欧美日韩一区二区精品| 国产精品久久久久久五月尺| 国产精品一区久久| 国产又爽又黄的激情精品视频| 很黄很黄激情成人| 亚洲国产天堂久久综合网| 亚洲精品裸体| 亚洲一区二区在线看| 午夜亚洲福利| 91久久香蕉国产日韩欧美9色| 99国产精品私拍| 午夜精品视频网站| 久久亚洲欧美国产精品乐播| 欧美成人影音| 国产精品sss| 国内精品久久久久影院薰衣草| 亚洲国产成人久久综合| 日韩视频永久免费观看| 午夜精品一区二区三区在线| 亚洲国产精品尤物yw在线观看| 日韩亚洲欧美一区| 午夜精品视频在线| 美女在线一区二区| 欧美色中文字幕| 国产自产高清不卡| 日韩视频免费观看高清在线视频| 亚洲永久在线观看| 91久久精品国产91性色| 亚洲尤物视频在线| 久久免费视频这里只有精品| 欧美国产一区视频在线观看| 国产精品免费网站| 在线精品国产成人综合| 一区二区三区四区在线| 久久狠狠亚洲综合| 亚洲午夜国产成人av电影男同| 久久精品99国产精品日本| 欧美电影免费观看高清| 国产精品老女人精品视频| 激情六月综合| 亚洲一区二区日本| 亚洲人永久免费| 久久av一区二区| 欧美日韩国产美女| 狠狠狠色丁香婷婷综合久久五月| 一区二区欧美精品| 亚洲国产精品va在线看黑人动漫 | 免费亚洲电影| 国产九色精品成人porny| 亚洲高清视频在线| 亚洲专区欧美专区| 一区二区三区 在线观看视| 久久久视频精品| 欧美午夜激情小视频| 国产综合色产在线精品| 在线一区二区日韩| 亚洲免费大片| 久久久噜噜噜久久中文字幕色伊伊| 欧美日韩hd| 尤物在线精品| 欧美一区二区三区视频在线| 亚洲一区二区欧美日韩| 欧美华人在线视频| 国内一区二区在线视频观看| 亚洲伊人伊色伊影伊综合网| 一本久久综合亚洲鲁鲁五月天| 老司机午夜精品| 国产欧美精品在线播放| 9色国产精品| 日韩一级二级三级| 美女日韩在线中文字幕| 国产人妖伪娘一区91| 亚洲一区二区三区高清不卡| 亚洲视频综合在线| 欧美激情在线观看| 亚洲高清在线视频| 久久激情网站| 久久久精品国产免大香伊| 国产精品伊人日日| 亚洲一区二区三区乱码aⅴ| 中文国产成人精品| 欧美日韩第一区日日骚| 亚洲激情成人| 日韩午夜电影av| 欧美成人资源网| 伊人蜜桃色噜噜激情综合| 久久成人免费网| 久久精品最新地址| 国产综合视频在线观看| 午夜性色一区二区三区免费视频 | 国产精品亚洲综合| 亚洲男女毛片无遮挡| 欧美一区二区成人6969| 国产欧美1区2区3区| 亚洲综合国产| 久久av最新网址| 国产主播一区二区三区| 久久精品日韩欧美| 免费欧美日韩国产三级电影| 在线播放亚洲一区| 亚洲精品国产品国语在线app| 女人色偷偷aa久久天堂| 亚洲国产天堂网精品网站| 亚洲伦理在线免费看| 欧美片在线观看| 亚洲午夜日本在线观看| 欧美在线播放| 韩国av一区| 亚洲免费高清视频| 欧美日韩妖精视频| 亚洲欧美国产精品va在线观看| 欧美在线观看网站| 一区二区视频免费在线观看| 亚洲老板91色精品久久| 欧美三级在线视频| 亚洲欧美日韩国产成人| 久久久成人网| 亚洲国产成人精品女人久久久 | 欧美日韩妖精视频| 亚洲欧美经典视频| 久久综合99re88久久爱| 亚洲国产精品久久91精品| 一区二区高清| 国产毛片一区| 亚洲国产精品日韩| 欧美激情a∨在线视频播放| 一区二区三区欧美| 久久精品国产精品| 亚洲激情成人| 香蕉精品999视频一区二区| 红桃av永久久久| 亚洲视频一区二区在线观看| 国产精品中文在线| 亚洲人成人77777线观看| 国产精品wwwwww| 亚洲第一区中文99精品| 欧美日韩亚洲综合在线| 欧美有码在线视频| 欧美日韩亚洲一区三区| 欧美一区二区三区的| 欧美剧在线观看| 欧美一区二区三区免费大片| 欧美高清视频在线播放| 亚洲一二三四区| 欧美成人综合| 先锋影音久久久| 欧美日韩国产综合网| 欧美在线免费看| 欧美日韩在线一区| 亚洲国产老妈| 国产精品视频久久久| 亚洲精品一区二区网址| 国产精品尤物福利片在线观看| 亚洲精品资源| 国产日韩精品一区二区三区| 日韩亚洲视频在线| 好吊色欧美一区二区三区视频| 在线亚洲欧美专区二区| 韩国福利一区| 午夜精品www| 亚洲日韩第九十九页| 久久蜜臀精品av| 一区二区三区视频观看| 免费久久精品视频| 午夜激情亚洲| 欧美三级视频在线观看| 91久久精品国产91性色| 国产三级精品在线不卡| 在线一区二区三区做爰视频网站| 国产一区二区三区黄视频| 亚洲综合电影| 亚洲靠逼com| 欧美成年人视频网站| 欧美一区二区三区视频在线观看 |