[flex] 新人报道,自己设计的一个Flex与java通信的框架
E-Hunter
2009-01-30
马上就要毕业了,因为打算使用Flex+Java来完成毕业设计,所以就看了一些Flex与Java通信的资料。不过发现一个问题就是BlazeDS需要很多的配置文件。为了少写一点配置文件,所以有了设计这个简单的框架的想法。之前学习过struts,所以在这个框架里面,可以看到很多struts的影子,让各位高手见笑了。
服务器写一个ActionServlet,将所有的.do请求映射到ActionServlet上,ActionServlet中读取web.xml中配置过的参数,把action所在的包包名读出来,这样就知道ActionServlet就知道去哪里找相应的action。 当对*.do进行请求的时候,会交给ActionServlet进行处理。那么在ActionServlet中解析请求路径,按照规则映射给不同的action中的方法执行,如: 我们请求这样的路径:http://localhost:8080/MyAMF/test/mapping/hello.do 解析规则:获得请求路径,即/test/mapping/hello.do ,将被解析成对TestMappingAction类中的hello()的请求,组合出这个类的完全限定名后,用反射将其实例化,然后调用hello方法。 然后在action中几个封装方法,一是toBean(),将request中的参数拷贝到Bean中的相应属性。另一个是fromBean(),是将Bean转换成HashMap,然后传递给Flex客户端,如果是一个集合类型的话,最终就要转换成一个HashMap数组 action中被请求的方法返回类型为Object,利用Amf3Output将其输出为二进制的序列。 在AS中,URLLoder发送完请求的返回值就是上面提到的序列,然后 var byte:ByteArray = loader.data as ByteArray; byte.uncompress(); var obj:Object = byte.readObject(); 主要的设计思想就是这些,嘿嘿,见笑了,欢迎大家多提意见。 |
|
andot
2009-02-01
如果你是不喜欢配置文件的话,那么用 PHPRPC 更简单,可以直接实现远程过程调用,还可以传递复杂对象,还有加密传输等特性。
|
|
E-Hunter
2009-02-01
呵呵,忘了说,我是学的java,PHP不太会啊,不过谢谢,我去查查这个PHPRPC的资料看下。
|
|
goddy128
2009-02-01
java也可以直接rpc~~~~~~~~
|
|
andot
2009-02-02
PHPRPC 跟 PHP 没啥关系,不需要 PHP,它是一个 RPC 协议(及其实现),看来叫这个名字确实很容易让人误解啊~
|
|
E-Hunter
2009-02-02
andot 写道 PHPRPC 跟 PHP 没啥关系,不需要 PHP,它是一个 RPC 协议(及其实现),看来叫这个名字确实很容易让人误解啊~
哦,原来如此,我学习一下,呵呵 |
|
superdandy
2009-02-04
用httpservice的话,后台几乎可以直接当成ajax来用了,只不过,返回的数据以xml为主,大型应用中的转换速度不能恭维,不过一般的小系统足够用了,也足够简单了。
|
|
E-Hunter
2009-02-04
superdandy 写道 用httpservice的话,后台几乎可以直接当成ajax来用了,只不过,返回的数据以xml为主,大型应用中的转换速度不能恭维,不过一般的小系统足够用了,也足够简单了。
就是为了解决这个速度慢的问题,才有了设计这个的想法,这个和用HTTPService是类似的,只不过返回的是经过AMF3压缩的二进制流 |
|
terryzhou
2009-02-05
spring-blazeds已经简化了BDS的设置。
|
|
LK.Bing
2009-12-04
楼主很强,很强
|