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

基于Xfire實(shí)現(xiàn)跨平臺(tái)的Flex消息訂閱服務(wù)

2015-05-11 01:32:42
關(guān)鍵詞:跨平臺(tái)利用服務(wù)

張 威

(湖北工業(yè)大學(xué)計(jì)算機(jī)學(xué)院, 湖北 武漢 430068)

?

基于Xfire實(shí)現(xiàn)跨平臺(tái)的Flex消息訂閱服務(wù)

張 威

(湖北工業(yè)大學(xué)計(jì)算機(jī)學(xué)院, 湖北 武漢 430068)

通過(guò)分析當(dāng)前RIA中流行的解決方案----Flex,針對(duì)Flex的異步通信機(jī)制,結(jié)合Xfire提供一個(gè)跨平臺(tái)的消息訂閱服務(wù),利用了BlazeDS作為中間件,可以實(shí)現(xiàn)消息的廣播傳輸,很好地應(yīng)對(duì)互聯(lián)網(wǎng)中跨平臺(tái)的各種主動(dòng)消息推送。

Xfire;Flex;BlazeDS;消息訂閱服務(wù);RIA

互聯(lián)網(wǎng)應(yīng)用中,經(jīng)常會(huì)有消息的主動(dòng)推送服務(wù),諸如進(jìn)入一個(gè)網(wǎng)站,就會(huì)有各種各樣的推廣來(lái)提供給用戶(hù)。當(dāng)用戶(hù)瀏覽某一個(gè)商品后,服務(wù)器就會(huì)根據(jù)用戶(hù)的習(xí)慣行為與瀏覽記錄來(lái)為用戶(hù)定制專(zhuān)門(mén)的商品信息服務(wù),主動(dòng)推送各種消息。各種門(mén)戶(hù)網(wǎng)站用戶(hù)也可以訂閱自己感興趣的內(nèi)容,一旦訂閱,服務(wù)器就會(huì)主動(dòng)推送最新的內(nèi)容給用戶(hù)。利用Flex來(lái)構(gòu)建Web應(yīng)用,同樣也需要這種消息訂閱服務(wù),考慮到平臺(tái)異構(gòu)性與交互性,需要引入一個(gè)Web Service來(lái)作為外部訪問(wèn)的接口。

由于移動(dòng)終端的迅猛發(fā)展,要部署一個(gè)Web應(yīng)用就必須要考慮到跨平臺(tái)移植性,而Flex則利用Adobe Player的廣泛裝機(jī)量,真正實(shí)現(xiàn)了跨平臺(tái)。為實(shí)現(xiàn)各種客戶(hù)端能夠訪問(wèn)服務(wù)器端,屏蔽各種編程語(yǔ)言的差異,需要提供一個(gè)跨平臺(tái)的服務(wù)調(diào)用機(jī)制,Web Service就是一種這樣的技術(shù),Xfire是一種非常優(yōu)秀的Web Service框架,構(gòu)建快速、穩(wěn)定。

1 相關(guān)技術(shù)簡(jiǎn)介

1.1 Xfire

Xfire是一代新的Web Service引擎。Xfire是codehaus推出的在設(shè)計(jì)上面向文檔的Java SOAP框架, 通過(guò)提供簡(jiǎn)單的API和支持標(biāo)準(zhǔn)協(xié)議, 可以方便地開(kāi)發(fā)面向服務(wù)的應(yīng)用程序,內(nèi)建在STAX基于流的XML解析引擎的基礎(chǔ)上, Xfire擁有能夠脫離Web服務(wù)器的單元測(cè)試能力,能夠支持普通的Java對(duì)象、面向XML綁定的Java架構(gòu),并且是利用XML流式STAX來(lái)處理XML文檔,支持通用的傳輸協(xié)議,如HTTP、JMS等,另外還有個(gè)強(qiáng)大豐富的API庫(kù)。

Xfire的高性能主要得益于Xfire使用的內(nèi)存非常小,且提供了幾種性能優(yōu)化的方法,諸如Java虛擬機(jī)內(nèi)部傳輸。但是Xfire同樣也有些局限性,Xfire在開(kāi)發(fā)WSDL模塊工具的時(shí)候,經(jīng)常要使用到注解,這點(diǎn)非常不方便,支持的附件很少,并且沒(méi)有簡(jiǎn)單易用的開(kāi)發(fā)文檔[1]。

1.2 Flex

Flex是當(dāng)前應(yīng)用最廣最成熟的RIA 技術(shù)之一,它非常適合去構(gòu)建一個(gè)良好網(wǎng)絡(luò)交互能力和絢麗表現(xiàn)效果的Web應(yīng)用。Flex主要是作為客戶(hù)端,通過(guò)異步方式和服務(wù)器通信,將獲取的數(shù)據(jù)通過(guò)組件展現(xiàn)給用戶(hù)[2]。在Flex應(yīng)用程序框架中, Flex表示服務(wù)器提供基于標(biāo)準(zhǔn)的、聲明的編程方法和流程,并提供運(yùn)行時(shí)服務(wù),用于開(kāi)發(fā)和部署客戶(hù)端應(yīng)用程序的表示層。 Flex具有非常便利的頁(yè)面展示特性,諸如內(nèi)置的字段校驗(yàn)、過(guò)濾器、視頻播放器、數(shù)據(jù)格式以及特效等,而這些正是Flex與傳統(tǒng)HTML應(yīng)用程序的差異[3]。

Flex的客戶(hù)端應(yīng)用程序框架由MXML、ActionScript及Flex類(lèi)庫(kù)構(gòu)成。用戶(hù)直接在MXML文件中利用內(nèi)置組件以及ActionScript編寫(xiě)Flex應(yīng)用程序, Flex提供了強(qiáng)大的通用組件,可以直接調(diào)用,諸如表格、曲線圖、柱形圖、菜單、折疊面板等各種頁(yè)面布局組件, 再用ActionScript 定義客戶(hù)邏輯與程序控制。也包含了Web服務(wù)連接、用戶(hù)界面組件與數(shù)據(jù)源之間的數(shù)據(jù)綁定、動(dòng)畫(huà)效果等不可視組件。MXML專(zhuān)注于表示層的邏輯,將表示層與業(yè)務(wù)邏輯分開(kāi),提高了應(yīng)用程序的復(fù)用性。Flex可以很方便地利用各種中間件來(lái)實(shí)現(xiàn)與服務(wù)器端Java的通信,諸如BlazeDS、LCDS。

1.3 BlazeDS

Flex與服務(wù)器通信可以用HTTPService、WebService、URLLoader來(lái)完成,但數(shù)據(jù)流傳輸較小,當(dāng)需要Flex與后臺(tái)服務(wù)器之間傳輸大量的數(shù)據(jù)或者不同對(duì)象的序列化時(shí)候,則利用實(shí)現(xiàn)了AMF協(xié)議的BlazeDS。BlazeDS可以用來(lái)與服務(wù)器端的Java對(duì)象遠(yuǎn)程交互,也可以在客戶(hù)端之間傳遞消息。一般可以利用BlazeDS的遠(yuǎn)程技術(shù)來(lái)調(diào)用POJO或者EJB方法,可以利用其消息系統(tǒng)從客戶(hù)端向服務(wù)器端發(fā)送消息,并且由服務(wù)器端向客戶(hù)端推送消息[4]。

BlazeDS為客戶(hù)端與服務(wù)器之間通信提供了一系列的服務(wù),實(shí)現(xiàn)了它們之間的實(shí)時(shí)消息傳遞,可以利用這一點(diǎn)來(lái)實(shí)現(xiàn)服務(wù)器端的消息主動(dòng)推送服務(wù)。BlazeDS核心功能就是RPC Service和Messaging Service。遠(yuǎn)程過(guò)程調(diào)用服務(wù)為Flex前臺(tái)訪問(wèn)服務(wù)器端的J2EE提供了一種異步請(qǐng)求機(jī)制,服務(wù)器端處理請(qǐng)求后返回?cái)?shù)據(jù)到客戶(hù)端。消息服務(wù)可以使得客戶(hù)端程序通過(guò)往返的消息和服務(wù)端異步通訊。

2 消息訂閱服務(wù)實(shí)現(xiàn)

2.1 服務(wù)流程圖

整個(gè)服務(wù)設(shè)計(jì)理念是為了實(shí)現(xiàn)跨平臺(tái)的消息服務(wù),使得分布于各個(gè)地方的異構(gòu)化平臺(tái)都能最終發(fā)送與接收消息服務(wù)。Flex本來(lái)就是跨平臺(tái)的,不論是Windows平臺(tái)下還是Linux平臺(tái)下,都可以正常訪問(wèn),這也得益于Flash Player的廣泛裝機(jī)量,并且在移動(dòng)終端領(lǐng)域中的市場(chǎng)份額,Android手機(jī)上依然可以訪問(wèn)Flex平臺(tái),內(nèi)置于Web中,可以輕松的隨時(shí)隨地訪問(wèn)。Flex和服務(wù)器端的Java程序用BlazeDS通信即可。

為了融合異構(gòu)平臺(tái)的交互與通信,實(shí)現(xiàn)軟件開(kāi)發(fā)環(huán)境下的跨平臺(tái),需要使用Web Service服務(wù),這里就用到Xfire作為Web Service的實(shí)現(xiàn),圖1為服務(wù)流程圖。

圖1 服務(wù)流程圖

2.2 Flex前端實(shí)現(xiàn)

在J2EE項(xiàng)目中,整合Flex作為其表示層,只需要利用開(kāi)發(fā)工具M(jìn)yEclipse,構(gòu)建一個(gè)Web Project,然后再右鍵點(diǎn)擊“添加/更改項(xiàng)目類(lèi)型”為Flex項(xiàng)目類(lèi)型。項(xiàng)目創(chuàng)建好后,將BlazeDS下的WEB-INF和META-INF文件夾內(nèi)容復(fù)制到創(chuàng)建的Flex項(xiàng)目下的WebRoot目錄中,至此開(kāi)發(fā)環(huán)境構(gòu)建好。

這里采用BlazeDS作為Flex訪問(wèn)后臺(tái)Java程序的中間件。消息主動(dòng)推送利用BlazeDS的消息服務(wù)功能實(shí)現(xiàn)。Flex內(nèi)置有Producer和Consumer兩個(gè)ActionScript類(lèi),這兩個(gè)類(lèi)是內(nèi)置的消息機(jī)制類(lèi),也是設(shè)計(jì)模式中使用到的一種“生產(chǎn)者和消費(fèi)者模式”。

BlazeDS的核心功能是消息服務(wù),一個(gè)消息屬性有一個(gè)唯一消息ID、多個(gè)BlazeDS 消息頭、多個(gè)自定義的消息頭和消息正文。客戶(hù)端程序調(diào)用消息生產(chǎn)者發(fā)送消息,可以在Flex 程序中使用生產(chǎn)者組件定義一個(gè)生產(chǎn)者。客戶(hù)端程序調(diào)用消息消費(fèi)者接受消息,可以在Flex 程序中使用消費(fèi)者組件定義一個(gè)消費(fèi)者。消費(fèi)者組件訂閱服務(wù)端地址,接收消息生產(chǎn)者發(fā)送到該地址的消息,這里主要用到的就是消息消費(fèi)者組件,而消息生產(chǎn)者由Java后臺(tái)的Servlet來(lái)實(shí)現(xiàn)。BlazeDS的消息服務(wù)中,消息的發(fā)送與接收都必須要經(jīng)過(guò)一個(gè)通道封裝,這個(gè)通道包含了服務(wù)目的地址、內(nèi)容以及網(wǎng)絡(luò)協(xié)議,并且負(fù)責(zé)消息的格式化,最后將其傳送到一個(gè)端點(diǎn)上,所以發(fā)送消息與訂閱消息必須要指定具體的通道以及端點(diǎn)目的地。

在WebRoot/WEB-INF/flex/messaging-config.xml中,添加消息發(fā)送的通道名以及端點(diǎn)。

true

.

Flex的MXML文件中,在組件的creationComplete方法中定義初始化消息消費(fèi)者,這樣就能保證每次組件初始化后,就會(huì)主動(dòng)得到消息。

var consumer:Consumer = new Consumer();

consumer.destination ="node-data-feed";

consumer.subtopic = "node";

consumer.channelSet = new ChannelSet(["my-streaming-amf"]);

consumer.addEventListener(MessageEvent.MESSAGE, messageHandler);

consumer.subscribe();

利用Consumer組件來(lái)設(shè)置通道名以及端點(diǎn)地址,監(jiān)聽(tīng)事件為MessageEvent.MESSAGE,最后利用subscribe()來(lái)訂閱消息,所有發(fā)送到這個(gè)端點(diǎn)的消息都會(huì)主動(dòng)反饋給該組件,可以在該監(jiān)聽(tīng)方法messageHandler進(jìn)行消息的獲取。

2.3 服務(wù)器Servlet端實(shí)現(xiàn)

利用Servlet來(lái)實(shí)現(xiàn)業(yè)務(wù)邏輯,Web Service中的接口就能夠通過(guò)HTTP方式來(lái)訪問(wèn)。在Servlet只需要設(shè)置解析Web Service以HTTP協(xié)議傳遞過(guò)來(lái)的各種參數(shù)具體值。這里用到了MessageBroker 和AsyncMessage ,兩者都是Flex與Java消息通信的Java語(yǔ)言具體實(shí)現(xiàn)類(lèi)。MessageBroker 負(fù)責(zé)消息發(fā)送,而AsyncMessage 包含了消息端點(diǎn)、消息頭、消息正文、客戶(hù)端ID、消息ID等信息。

MessageBroker msgBroker = MessageBroker.getMessageBroker(null);

String clientID = UUIDUtils.createUUID();

String mess = "&";

AsyncMessage msg = new AsyncMessage();

msg.setDestination("node-data-feed");

msg.setHeader("DSSubtopic", "node");

msg.setClientId(clientID);

msg.setMessageId(UUIDUtils.createUUID());

msg.setTimestamp(System.currentTimeMillis());

msg.setBody(mess);

msgBroker.routeMessageToService(msg, null);

2.4 Xfire的Web Service實(shí)現(xiàn)

在MyEclipse中直接創(chuàng)建一個(gè)Xfire的Web Service項(xiàng)目,會(huì)自動(dòng)生成服務(wù)名,以及服務(wù)接口和服務(wù)實(shí)現(xiàn)類(lèi),此服務(wù)名就是外部訪問(wèn)該服務(wù)接口時(shí)候的名稱(chēng)。在項(xiàng)目根目錄下會(huì)自動(dòng)生成一個(gè)WebServices文件夾,該文件夾中的services.xml主要就是服務(wù)的各種描述,具體代碼如下:

在提供給外部調(diào)用的方法中,添加訪問(wèn)Servlet的方法,這里利用URL類(lèi),直接通過(guò)HTTP協(xié)議來(lái)與服務(wù)器端的Servlet通信,代碼如下:

String path = "http://" + Servlet主機(jī)IP+ ":" + Servlet主機(jī)Web服務(wù)器端口號(hào)+ "/"+Servlet名+"/" +其余參數(shù)

URL messUrl = new URL(path);

messUrl.openStream();

2.5 消息訂閱服務(wù)總結(jié)

本系統(tǒng)利用Xfire來(lái)實(shí)現(xiàn)異構(gòu)化平臺(tái)之間的通信,當(dāng)外部訪問(wèn)Xfire提供的各種接口后,最終都會(huì)直接調(diào)用服務(wù)器端的Servlet,而Servlet會(huì)將這些消息傳遞給指定的通道與端點(diǎn)所確定的位置,當(dāng)用戶(hù)打開(kāi)頁(yè)面,F(xiàn)lex組件初始化完畢后,就會(huì)主動(dòng)在已設(shè)定好的通道與端點(diǎn)中拉送消息,當(dāng)有消息后,這些消息會(huì)發(fā)送給那些已經(jīng)訂閱消息的組件,整個(gè)消息訂閱就完成了。

3 結(jié)束語(yǔ)

本文通過(guò)Web Service中的Xfire技術(shù)和Flex進(jìn)行分析與闡述,介紹了各個(gè)技術(shù)的特點(diǎn)以及應(yīng)用場(chǎng)合,并且分析了Flex與Java后臺(tái)通信的中間件BlazeDS。通過(guò)對(duì)幾個(gè)技術(shù)的闡明與分析,最終實(shí)現(xiàn)了一個(gè)基于Xfire下的Flex消息訂閱服務(wù),可以很好地實(shí)現(xiàn)異構(gòu)化平臺(tái)之間的交互。手機(jī)終端、PC終端都可以訪問(wèn)Web Service接口,在服務(wù)中實(shí)現(xiàn)了跨平臺(tái),在Web頁(yè)面中也實(shí)現(xiàn)了跨平臺(tái)。構(gòu)建高可靠性、穩(wěn)定性、靈活性的Web服務(wù),需要在基本功能實(shí)現(xiàn)的基礎(chǔ)上,進(jìn)一步地研究與實(shí)現(xiàn)。

[1] 劉 通,張亞男. 基于Xfire的分布式Java Web Services的應(yīng)用[J].長(zhǎng)春工業(yè)大學(xué)學(xué)報(bào),2008,29(02):183-185.

[2] 吳 波.Flex異步通信方式的比較[J].廣播與電視技術(shù),2012(02):133-138.

[3] 王 非. WebServices應(yīng)用研究與RIA系統(tǒng)中的實(shí)現(xiàn)[J].計(jì)算機(jī)應(yīng)用與軟件,2010,27(03): 168-170.

[4] 蝦 皮.細(xì)細(xì)品味Flex-BlazeDS開(kāi)發(fā)指南[EB/OL]. (2012-05-26)[2014-09-01]http://www.cnblogs.com/xia520pi/archive/2012/05/26/2519343.html.

[責(zé)任編校: 張巖芳]

The Cross-platform Flex News Subscription Service Based on Xfire

ZHANG Wei

(SchoolofComputerScience,HubeiUniv.ofTech. ,430068Wuhan,China)

The paper analysed the asynchronous mechanism of Flex-the widely used solution in RIA, this paper provided a cross-platform news subscription service which is integrated with Xfire and utilizes BlazeDS. The service can implement the news broadcast transmission, and push the cross-platform news on the Internet very well. Keywords: Xfire;Flex;BlazeDS; news subscription service; RIA

2014-10-21

張 威(1988-), 男, 河南息縣人,湖北工業(yè)大學(xué)碩士研究生,研究方向?yàn)橛?jì)算機(jī)網(wǎng)絡(luò)

1003-4684(2015)01-0039-04

TP3

A

猜你喜歡
跨平臺(tái)利用服務(wù)
利用min{a,b}的積分表示解決一類(lèi)絕對(duì)值不等式
利用一半進(jìn)行移多補(bǔ)少
服務(wù)在身邊 健康每一天
服務(wù)在身邊 健康每一天
服務(wù)在身邊 健康每一天
跨平臺(tái)APEX接口組件的設(shè)計(jì)與實(shí)現(xiàn)
利用數(shù)的分解來(lái)思考
Roommate is necessary when far away from home
招行30年:從“滿(mǎn)意服務(wù)”到“感動(dòng)服務(wù)”
商周刊(2017年9期)2017-08-22 02:57:56
基于QT的跨平臺(tái)輸電鐵塔監(jiān)控終端軟件設(shè)計(jì)與實(shí)現(xiàn)
主站蜘蛛池模板: 婷婷综合缴情亚洲五月伊| 亚洲欧洲日韩综合色天使| 精品无码国产一区二区三区AV| 在线观看国产精美视频| 亚洲大尺度在线| 久久这里只有精品66| 亚洲日韩国产精品无码专区| 久久精品无码一区二区日韩免费| 日韩在线2020专区| 四虎影视永久在线精品| 日本欧美在线观看| 91福利国产成人精品导航| 国产凹凸视频在线观看 | 国产免费精彩视频| 亚洲第一极品精品无码| 无码精品国产dvd在线观看9久| 农村乱人伦一区二区| 国产欧美精品一区二区| 日韩在线视频网站| 在线欧美一区| 日韩a级片视频| 国产性生交xxxxx免费| 中文字幕在线观| 国产成人精彩在线视频50| 在线国产欧美| 亚洲三级a| 国产原创自拍不卡第一页| 国产麻豆精品手机在线观看| 中文字幕伦视频| 精品国产一区91在线| 婷婷综合色| 丝袜亚洲综合| 无码专区第一页| h网站在线播放| 国产在线无码一区二区三区| 1769国产精品视频免费观看| 一本大道视频精品人妻| 久久久久久久久久国产精品| 一级毛片免费播放视频| 呦视频在线一区二区三区| 亚洲av日韩av制服丝袜| 精品乱码久久久久久久| 国产又色又爽又黄| 青青草原国产一区二区| 久久网欧美| 国产成人综合亚洲欧洲色就色| 久久久久青草线综合超碰| 日韩小视频在线播放| 又爽又大又光又色的午夜视频| 理论片一区| 四虎永久免费地址在线网站| 99在线观看免费视频| 91丨九色丨首页在线播放| 亚洲最大在线观看| 欧美日韩在线亚洲国产人| 国产高清自拍视频| 人妻丰满熟妇AV无码区| 永久免费无码成人网站| 日本手机在线视频| 三级毛片在线播放| 性色一区| 一级毛片免费不卡在线| 9久久伊人精品综合| 免费Aⅴ片在线观看蜜芽Tⅴ| 国产超薄肉色丝袜网站| 99性视频| 欧美精品综合视频一区二区| 免费国产黄线在线观看| 成人精品视频一区二区在线| 日韩一区二区在线电影| 国产精品视频999| 亚洲无线视频| 毛片一级在线| 国产精品久久精品| 国产亚洲精品yxsp| 97se综合| 亚洲国产精品VA在线看黑人| 亚洲精品福利网站| 久久久久久高潮白浆| 国产成人亚洲日韩欧美电影| 国内精品91| 亚洲无码一区在线观看|