最近考虑项目是不是要引进Flex技术,所以花一周研究Flex的几大方面,先给出自己的一点体会[很浅],希望交流!
今天的富客户端,无论ajax,flex,javafx,sliverlight!
都不可回避的问题是什么???
客户端[可以看做新时代的web层]与服务器[看做新时代的服务组件]怎么交互.
最好是客户端,服务器端有容器帮我们解决,让我们写ajax,flex想struts2 freemarker一样简单!
所以:
Flex在客户端有Cairngorm
在服务器端有blazeDs
不过如果真的用还是建议自己简化封装blazeDs就是java的代码,以servlet作为入口,如果用过axis,cxf,呵呵是不是就 是 soap和AMF区别,那就是编码,解码器不同[引用通信术语],思考!
必须考虑的问题是什么?
通信的效率,通信的次数,编码解码的效率,UI渲染的效率[Ext渲染,与服务器交换次数,数量,javaeye的人应该生有体会,]
我们来简单看一个,flex+tomcat [blazeDa弱化,只是java的一个框架类似struts,axis]的例子,生有不要强化blazeDs需要弱化,因为知道AMF协议自己可以做个blazeDs 呵呵AMFPHP就是哈!
简单看哈Flex端代码:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" backgroundGradientColors="[0x000000,0x323232]">
<mx:ChannelSet id="channelSet">
<mx:AMFChannel id="amfChannel" url="http://localhost:8080/blazeDsTomcat/blazeDs/bobo"/>
</mx:ChannelSet>
<mx:RemoteObject id="srv" destination="language" channelSet="{channelSet}"/>
<mx:DataGrid dataProvider="{srv.getLanguages.lastResult}" width="100%" height="100%">
<mx:columns>
<mx:DataGridColumn dataField="id" headerText="id"/>
<mx:DataGridColumn dataField="name" headerText="Name"/>
<mx:DataGridColumn dataField="desc" headerText="Desc"/>
</mx:columns>
</mx:DataGrid>
<mx:Button label="Get Data" click="srv.getLanguages()"/>
</mx:Application>
http://localhost:8080/blazeDsTomcat/blazeDs/bobo这个很重要哈,看看服务器web.xml中怎么配置的哈?
<servlet>
<servlet-name>MessageBrokerServlet</servlet-name>
<servlet-class>flex.messaging.MessageBrokerServlet</servlet-class>
<init-param>
<param-name>services.configuration.file</param-name>
<param-value>/WEB-INF/flex/services-config.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>MessageBrokerServlet</servlet-name>
<url-pattern>/blazeDs/*</url-pattern>
</servlet-mapping>
哈哈Flex端请求到了flex.messaging.MessageBrokerServlet这个不就是Servlet与axis,struts有何区别
唯一不同是http承载的数据格式不同,需要不同的解码与编码器,一般内置了哈,开发是透明的!所以sping就是想达到开发flex与传统开发java没有多大区别,是开发值关心Flex ui 与event 与pojo
那么?MessageBrokerServlet类怎么处理请求,猜想肯定找对应的类解码AMF数据然后调用处理者[我们的业务组件]
源码:
String contextPath = req.getContextPath();
String pathInfo = req.getPathInfo();
String endpointPath = req.getServletPath();
if (pathInfo != null)
endpointPath = endpointPath + pathInfo;
Endpoint endpoint = null;
try
{
endpoint = broker.getEndpoint(endpointPath, contextPath);
}
呵呵根据请求找到对应的endpoint ,然后解码----调用业务组件---编码 返回Flex端
看看服务器端代码与配置[消除了网上很多例子的融于代码]
上面web.xml可以看到初始化了services-config.xml文件类似spring,一切都差不多,我们看看services-config.xml文件是什么? 如下
<?xml version="1.0" encoding="UTF-8"?>
<services-config>
<services>
<service-include file-path="remoting-config.xml" />
</services>
<channels>
<channel-definition id="my-amf" class="mx.messaging.channels.AMFChannel">
<endpoint url="http://{server.name}:{server.port}/{context.root}/blazeDs/bobo" class="flex.messaging.endpoints.AMFEndpoint"/>
</channel-definition>
</channels>
</services-config>
就这样简单,引入了remoting-config.xml,看看这个文件是什么
<?xml version="1.0" encoding="UTF-8"?>
<service id="remoting-service"
class="flex.messaging.services.RemotingService">
<adapters>
<adapter-definition id="java-object"
class="flex.messaging.services.remoting.adapters.JavaAdapter"
default="true"/>
</adapters>
<default-channels>
<channel ref="my-amf"/>
</default-channels>
<destination id="language">
<properties>
<source>com.bobo.ComputerLanguageService</source>
</properties>
</destination>
</service>
也简单哈,大家仔细体会哈
blazeDs 是不是只是个axis,xfire这样差不多的[比axis,xfire还是轻量点哈]的一个接受请求,解码,调用服务[我们的],编码,就是个java的Servlet
所以关键是什么
客户端运行语言as----编码 为X[amf]------HTTP---------服务器接受请求派发[servlet]-----X解码----调用服务----java编码为X---返回客户端---X解码为客户端语言的类型
这个过程.,怎么做
1.都自己做 [会怎么样],想想javade发展 sevlet--jsp--srtuts1 webwork jsf
2.容器做 通信 编码解码
3框架类库
框架类库与容器概念今天不是很明确了
估计大家 很少几个能 看完的,不喜欢写博客就是业务说不清
还是喜欢 直接站在讲台讲课哈,可是 没有这样的好机会
代码见附件,2部分 flex java 那过去就可以跑!
localClientFlex.rar是flex的一个MXML需要你机器有Flex环境
localFlexClient_swf.rar包含flash直接可以运行但是要考虑安全设置
分享到:
相关推荐
### Flex Blazeds入门教程详解 #### 一、引言 Flex Blazeds入门教程,由刘铭朝撰写于2008年3月21日,旨在解决开发者在搭建Flex与LCDS(Flex Data Services)工程时遇到的常见问题。这篇教程不仅详细介绍了创建项目...
Flex BlazeDS开发使用手册是Adobe官方提供的一份详尽指南,旨在帮助开发者高效地集成BlazeDS框架到Flex应用程序中。BlazeDS是一款开源的服务器端技术,它为富互联网应用(RIA)提供了数据推送、消息传递和Remoting...
在这个实例中,我们关注的是一个简单的方法,该方法接收在Flex前端输入的字符串,并在Java后端返回一个处理后的字符串。 首先,让我们了解一下Flex。Flex是一种基于ActionScript和MXML的开源框架,用于构建富互联网...
Flex blazeds-spring Flex blazeds-spring Flex blazeds-spring Flex blazeds-spring Flex blazeds-spring Flex blazeds-spring
flex blazeds实现服务器向客户端推送数据 环境Eclipse Java EE IDE 服务apache-tomcat-7.0.23-windows-x86 blazeds采用的是blazeds4.0.0.14931 (附件中包含 apache-tomcat-7.0.23 + 源码 + 说明文档)
flex blazeds turnkey包flex blazeds turnkey包
综上所述,Flex BlazeDS Java项目涉及到前端UI设计、后端服务开发、数据交互、事件处理等多个方面的技术,对于希望学习和掌握Flex与Java集成开发的开发者来说,是一个很好的实践案例。通过深入研究该项目的源码,...
《Flex+BlazeDS配置详解》 在现代Web开发中,富互联网应用程序(RIA)的交互性和用户体验成为了关键。Flex作为Adobe开发的RIA框架,以其强大的图形界面设计和丰富的交互功能受到广泛欢迎。而BlazeDS是Adobe提供的一...
【Flex Spring JAVA BLAZEDS整合】是一种技术实践,它将Adobe Flex的前端展示层与Spring框架的后端业务逻辑层紧密结合,利用BlazeDS作为中间件进行数据传输。Flex作为一个强大的RIA(富互联网应用程序)开发平台,常...
标题中的“Flex + BlazeDS”指的是使用Adobe Flex作为前端开发框架,与BlazeDS作为后端数据服务的集成技术。Flex是一种开源的、基于ActionScript的框架,用于构建富互联网应用程序(RIA),它允许开发者创建具有动态...
BlazeDS是Flex的配套服务器组件,它允许Flex应用通过AMF(Action Message Format)与Java应用程序进行高效的数据通信。BlazeDS不仅支持远程方法调用(RPC),还支持发布和订阅消息模型,使得实时数据同步成为可能。...
flex BlazeDS java整合过程中犯的错误
JAVA通过BlazeDS与FLEX通信 BlazeDS.zip java项目,使用MYECLIPSE导入 FlexJavaServer.fxp FLEX项目,使用FLASHBUILDER4.5导入
Flex + blazeds + Java推送Demo 本例实现由Flex一端客户端发送消息, 然后由Java端在发布到所有订阅的其它Flex端. 里面有说明与源码, 还有一个直接放到Tomcat里面的直接发布的项目 小编使用工具 eclipse3.5 flex sdk...
Flex Blazeds Spring集成是将Adobe的Flex前端技术与Spring框架后端服务相结合的一种开发模式。这个DEMO展示了如何在Flex客户端应用中利用Spring框架来管理和服务通信,从而实现更高效、灵活的分布式应用程序。 Flex...
Flex BlazeDS通信是一种在富互联网应用程序(RIA)中实现客户端与服务器端数据交互的技术。它主要涉及Adobe Flex作为前端开发工具,以及BlazeDS作为后端数据服务的中间件。BlazeDS是Adobe官方推出的一个开源项目,...
标题“flex+blazeds+spring”表明我们要探讨的是如何将Flex前端与BlazeDS中继层和Spring后端框架结合起来,实现完整的数据交互和应用程序逻辑。 在Flex与Spring集成的环境中,Flex作为用户界面展示层,负责与用户...
Flex Blazeds与Java的集成在企业级Web系统开发中扮演着重要角色,它提供了一种高效、灵活的方式来构建富互联网应用程序(RIAs)。Blazeds是Adobe推出的一个开源项目,它作为Flex与服务器端技术之间的桥梁,尤其与...
Flex+blazeDS+Spring官方Demo,环境搭建,内含十几个例子,从易到难,包括spring消息,spring安全,注解方式和非注解配置文件方式,十分好用。内含有tomcat,可直接启动并运行用户手册。