9
十一

AgileJava RIA 随想(2)

昨天聊天的时候顺便讨论了一下 AgileJava RIA 的基本架构问题,第一套是以 Struts2 为交互层的普通 HTTP 请求,另一种是以 Hession 为交互层的 HTTP Remote,由于业务层和DAO层都是传统模式,暂时不提。

整个项目中,我们使用 Flex2 + ActionScript3 作为表现层,被编译成 Flash SWF 文件传到浏览器,Flash 可以使用 HTTP Request 或者 Socket 连接的方式同服务器建立连接,获取服务器端的数据,我们首选 HTTP Request 作为连接方式,原因是简单,所以在服务端需要做的就是处理 Flash 传过来的 HTTP Request 请求,并根据请求执行相应的业务逻辑操作。

第一种方案:以 Struts2 为中心的交互层。

Struts2 这一层能为我们做这些事情:

  1. 可以把 Request 中的参数拼装成 Action 中的对象;
  2. 可以使用内置机制进行相关的验证操作;
  3. 可以简单的通过自己实现一套拦截器进行权限控制。

而不大方便的就是在 Flash 中为 Request 中拼参数要拼装成 param1=1¶m2=2 这样的格式然后 post 给 Struts2 处理,Struts2 接到请求后:验证权限-> 验证 -> 拼数据。

第二种方案:以 Hession 为中心的交互层。

Hession 是一种支持多种语言的(包括 Java 和 Flash) HTTP Remote 协议。

传统的方式是 Java Client call Java Server,但是使用 Hession,我们就可以 Flash Client call Java Server 这样的方式,我们就省去了 Struts2 这一层,直接 Flash call Java 暴露出来的业务处理服务,这样的话,服务层就需要额外处理数据验证的逻辑,以及权限处理的逻辑。

另外在这里面没有 Session 的机制,我们需要独立设计一套机制来代替 Session,开发成本会比较高。

总的来说我还是比较倾向于 Struts2 的方案,是一个非常典型且成熟的 JavaEE 三层架构的方案,拼参数复杂的问题,我想还是可以通过自己写一些 ActionScript 的方法来简化的。

, , , ,

引用地址:http://www.steadyxp.com/archives/11.html

楼被抢了2层了

  1. 我赞同struts2的方案,因为没有必要为了数据的接口我们再造一个轮子:)
    至于字符串的拼接处理,做成util应该会很好的解决问题。
    不过个人有个想法就是,既然和html基本无关,那么时候有用struts2的必要性,直接使用filer或者servlet是不会更加简便一些呢?


    rocket Says @ 07-11-9 7:43
  2. Struts2 最重要的是有和 Spring 的直接整合,另外 Interceptor 机制便于灵活的扩展,另外一个 Request 对应一个 Action,如果用 servlet 的话,会比较难处理。

    我们相当于是把 struts2 退化成一个数据处理器,这方面,Struts2 也是比较胜任的。

    steady Says @ 07-11-9 7:47

要说点啥就在这吧