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

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