1、概述web
BlazeDS是Adobe公司發佈的免費開源產品,是該公司另外一個收費產品LCDS的簡化開源版本,BlazeDS使用Java語言在服務端提供以下功能:數據庫
一、提供客戶端(Flex、AIR)經過AMF協議訪問服務端(Java)數據的功能;服務器
二、提供服務端廣播數據給多個客戶端的功能;網絡
三、提供客戶端與客戶端實時通訊的功能;框架
一個BlazeDS應用程序包括兩個部分:客戶端應用程序和服務端J2EE應用程序,以下圖:異步
客戶端程序:一個BlazeDS應用的客戶端程序通常爲Flex或AIR,而Flex或AIR程序經過Flex SDK中的控件RemoteObject、HTTPService、Producer、Consumer與BlazeDS服務端通訊,另外,你也能夠結合Flex、HTML和JavaScript技術來構建客戶端程序,更能夠在HTML和JavaScript中使用Ajax客戶端庫來與BlazeDS通訊。flex
服務端程序:BlazeDS服務端運行在基於J2EE的Web服務器中,經過以下配置可使得一個J2EE Web服務器支持BlazeDS:加密
一、拷貝BlazeDS的jar文件和相關依賴jar文件到WEB-INF/lib目錄下;spa
二、編輯WEB-INF/flex目錄下BlazeDS的配置文件;翻譯
三、在WEB-INF/web.xml文件中定義MessageBrokerServlet和Session監聽器;
2、特色
下圖詳細展現了BlazeDS的主要特色:
一、RPC Services(RPC服務):RPC服務被設計成爲調用和響應的模式,這對應用程序訪問外部數據是一種很好的選擇,它可以使客戶端異步請求遠程服務並直接把結果返回,在具體程序中,可使用客戶端的RPC控件如HTTP GET或HTTP POST(HTTP Services)、SOAP(Web Services)、Java Objects(RemoteObject Services)訪問RPC Services。
若是你想經過使用RPC Services提供一些企業級功能,如不一樣域之間數據交換的代理功能、客戶端認證、服務器端日誌、本地化支持、RPC Services服務集中化管理等功能時,BlazeDS經過使用RemoteObject控件能夠輕鬆實現,而不須要配置他們像SOAP-compliant網絡服務。
當客戶端RPC控件調用遠程服務時,該控件就會把服務端返回的數據保存在一個ActionScript對象中,這樣,在程序中就可以很輕鬆的獲取該要的數據,而這些客戶端控件包括HTTPService、WebService、RemoteObject控件。
二、Messaging Services(消息服務):消息服務就是經過服務器端來回的傳送消息以實現客戶端的異步交流,一條消息由惟一標識號、BlazeDS頭、其餘自定義頭和消息體組成。
客戶端程序中發送消息的部分稱爲消息生產者(producers),在Flex程序中能夠經過Producer控件定義,而接收消息的部分稱爲消息消費者(consumer),在Flex中能夠經過Consumer控件定義,Consumer控件負責訂閱和接收服務器端某一個目的地的消息,而Producer控件負責向該目的地發送消息。
消息服務同時也支持經過JMSAdapter實現的橋接模式來訪問外部的JMS服務器,這使得Flex程序可以與外部的Java應用程序實現數據交流。
三、Service adapters:BlazeDS能夠訪問各類不一樣的數據持久化方案,好比數據庫、JMS等其餘持久化機制。
四、The message-based framework(基於消息的框架):BlazeDS在客戶端和服務器端來回的傳送數據,他是一個基於消息的框架,主要運用了兩種交換模式,第一種,請求/響應模式,客戶端發送請求給服務端,服務端處理好以後返回一個包含結果的響應,RPC服務就是使用的這種模式;第二種,發佈/訂閱模式,服務端將數據發佈給訂閱了該消息的客戶端列表,消息服務就是使用這種模式來發布數據給各客戶端的,同時,消息服務也使用請求/響應模式來解決一些發佈消息、數據交換等問題。
五、Channels and endpoints(通道和端點):在網絡上,客戶端是經過通道與服務端傳送數據的,通道負責封裝消息格式、網絡協議、解析方式、目的和應用代碼,負責格式化和翻譯消息爲特定網絡下的模式,而後分發給相應的端點。另外,通道使得客戶端發送給服務端的消息變得有序性和對應性,這對數據傳送的一致性和可預見性起到重要的做用。
在服務器端,通道是與基於Java的端點發生交換的,端點負責解析消息成特定的協議模式,而後把它傳送給普通Java形式的「消息代理人」(Message Broker),最終由消息代理人決定該消息發往何處,路由給恰當的目的地,詳細以下圖所示:
六、Channel types(通道類型):BlazeDS提供如下幾種通道:(1)標準AMF通道;(2)加密AMF通道;(3)HTTP通道(AMFX)。其中AMF和HTTP通道都支持無輪詢的請求/響應模式和客戶端輪詢模式(模擬實時通訊),而AMF和HTTP流通道模式提供了真正的數據流實時模式。