blazeds學(xué)習(xí)筆記一整體認(rèn)識(shí)
BlazeDS 是一組服務(wù)器端的通訊服務(wù),它能夠使得運(yùn)行在瀏覽器的 Adobe Flex 應(yīng)用程序服與服務(wù)器端的 Java 應(yīng)用程序相互通信。
整個(gè)體系主要包括 通道、端點(diǎn)、消息、服務(wù)、目的地、適配器 等,把這 些搞懂也就差不多了。 通道使得組件能夠 和 Blazeds 服務(wù)端的端點(diǎn)通信,將請(qǐng)求送到目的地 。 端點(diǎn)和通道是相互映射的 。
-
基于消息的框架
???????? Blazeds 使用基于消息的框架在客戶端和服務(wù)端之 間發(fā)送和返回?cái)?shù)據(jù)。
????????
Blazeds
在它們之間使用了兩個(gè)交換模式。第一個(gè)模式是請(qǐng)求
—
響應(yīng)模式,客戶端發(fā)送請(qǐng)求給服務(wù)端處理。服務(wù)端返回處理結(jié)果給客戶端。
RPC Service
就是使用這個(gè)模式。
???????
第二個(gè)模式是發(fā)布—訂閱模式,即服務(wù)端發(fā)布消息設(shè)置,客戶端訂閱了去接收它 們。
Messaging Service
使用這個(gè)模式將數(shù)據(jù)推給“感興趣“的客戶端。
?
如圖, BlazeDS 提供了三種關(guān)鍵的服務(wù)。
??????? Remoting Service 。提供一種客戶端直接調(diào)用服務(wù)器端 java 方法的方式。
????????Message Service 。提供一種基于發(fā)布 / 訂閱模式的消息服務(wù),可以用于實(shí)現(xiàn)實(shí)時(shí)的數(shù)據(jù)推送或協(xié)作的 flex 應(yīng)用。
????????? Proxy Service。 通過(guò) proxy service ,使得 flex 應(yīng)用可以實(shí)現(xiàn)安全的,受限的跨域訪問(wèn), 也 就是說(shuō)它讓您的 Flex 應(yīng)用程序訪問(wèn)的服務(wù)可以處于不同的 域,而不需要在目標(biāo)域里配置 crossdomain.xml 權(quán) 限文件。
-
Blazeds 客戶端結(jié)構(gòu)
BlazeDS 客戶端使用 BlazeDS 提供的基于消息的框架與服務(wù)器通訊。消息框架的客戶端部分是 Channels , Channels 封裝了 flex 客戶端與 BlazeDS 服務(wù)器的連接。
下 圖是 BlazeDS 客戶端的結(jié)構(gòu)圖
?
???? Flex 通訊組件
??????? Flex 提供了 RemoteObject , HTTPService , WebService , Producer , Consumer
??????? 等可以與 BlazeDS 通訊的組件,這些組件都包含在了 Flex SDK 中,是 Flex 組件庫(kù)的一部分。
??? Channels Set
????? ???? Channels 封裝了 Flex 組件與 BlazeDS 服務(wù)之間的連接,是處于 Flex 組件之下的一個(gè)通訊層。
????? ???? BlazeDS 提供了 AMFChannel 和 HTTPChannel 。 Flex 客戶端可以使用不同類型的 Channel 與 服務(wù)器通訊。
????? ???? Channel 是在 services-config.xml 中配置,下面是一個(gè) AMFChannel 的配置:
????? ????? ???? <channels>
??????? ????? ????? ???? …
?????? ????? ????? ???? <channel-definition id=”samples-amf” ?type=”mx.messaging.channels.AMFChannel”>
?????????? ????? ????? ?? ???? <endpoint url=”http://localhost:8400/myapp/messagebroker/amf” ? type=”flex.messaging.endpoints.AMFEndpoint”/>
???????? ????? ????? ???? </channel-definition>
????? ????? ???? </channels>
???? amf 協(xié)議 。 Amt 全稱是 action message format ,它是一種二進(jìn)制格式,專用于 as 和服務(wù) 器端通訊,比 http 通訊要快很多,支持多種數(shù)據(jù)類型,如 java , .net,php 等。
-
Blazeds 服務(wù)器端結(jié)構(gòu)
????? ???? BlazeDS 服務(wù)是一個(gè) J2EE 的 web 容器, Flex 客戶端通過(guò) channel 發(fā)送一個(gè)請(qǐng)求,請(qǐng)求在 BlazeDS 服務(wù)端會(huì)到達(dá)一個(gè) endpoint ,從 endpoint 開始,請(qǐng)求會(huì)通過(guò)一條 Java 對(duì)象處理鏈,包括: MessageBroker, service, destination, adapter ,結(jié)構(gòu)如下:
? MessageBroker
???? MessageBroker 負(fù)責(zé)轉(zhuǎn)發(fā)消息到 service ,接收到消息時(shí), MessageBroker 查看消息消息的 destination ,并把消息轉(zhuǎn)發(fā)給目標(biāo) service 。如果 destination 有安全限制保護(hù),在轉(zhuǎn)發(fā)之前, MessageBroker 會(huì)執(zhí)行身份認(rèn)證和授權(quán)檢查。 ????? ???? M essageBroker 的配置在 BlazeDS 應(yīng)用的 WEB-INF/flex/services-config.xml 文件中
? Services 和 destinations
???? Services 和 destinations 在 BlazeDS 服務(wù)中,是消息處理鏈的下一環(huán)節(jié)。
???? BlazeDS 包括四種一一對(duì)應(yīng)的 services 和 destinations:
????? ???? RemotingService 和 RemotingDestination
????? ???? HTPProxyService 和 HTTPProxyDestination
? ????? ???? MessageService 和 MessageDestination
???? 不同的 Flex 組件的請(qǐng)求是由不同的 Services 和 destinations 進(jìn)行 處理的,對(duì)應(yīng)關(guān)系如下:
????? ???? HTTPService 和 WebService 與 HTTPProxyService/HTTPProxyDestination
????? ???? RemoteObject 和 RemotingService/RemotingDestination
????? ???? Producer /Consumerhe 和 MessageService/MessageDestination
????? services 和 destinations 可以在 services-config.xml 配置 , 但是最好的做法是分別在下面的文件中進(jìn)行配置:
????? ???? RemotingService 在 remoting-config.xml 中配置
????? ???? HTTPProxyService 在 the proxy-config.xml 中配置
????? ???? MessageService 在 messaging-config.xml 中配置
? Adapters
當(dāng) 一個(gè)消息到達(dá)正確的 destination 時(shí), destination 會(huì)把消息發(fā)到相應(yīng)的一個(gè) Adapter 。 Destination 與 Adapter 的對(duì)應(yīng)關(guān)系如下:
???? RemotingDestination 使用 JavaAdapter
???? HTTPProxyDestination 使用 HTTPProxyAdapter 或 SOAPAdapter
???? MessageDestination 使用 ActionScriptAdapter 或 JMSAdapter
-
開始 Blazeds
? ?? 下載 Blazeds http://www.alisdn.com/wordpress/?paged=2
? ?? 解壓到 tomcat 的 webapps 目錄下
? ?? 啟動(dòng) tomcat
? ?? 訪問(wèn) http://127.0.0.1:8080/ds-console/
-
開發(fā) Blazeds 應(yīng)用
加入 blazeds\WEB-INF\lib\ 下的 jar 包
復(fù)制 blazeds\WEB-INF\flex 下的文件到項(xiàng)目的 WEB-INF/flex 目錄下,包括:
??????? messaging-config.xml
??????? proxy-config.xml
??????? remoting-config.xml
??????? services-config.xml
在 web.xml 文件中定義 MessageBrokerServlet 和 session listener
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
