经验总结-Extjs(一)数据交互设计

离职在即,也要花点时间把自己3年来的工作经验总结一下,从最开始的C++ Delphi .Net到现在的J2EE...也算玩了个遍。就从最近用的Extjs说起吧

 

 

Extjs作为页面表现层的RIA框架,其实已经能够完成90%的页面设计需求,也就是说,当你在项目中决定采用Extjs的时候,你就可以把你的美工和Struts,Spring-mvcMVC框架或者其他的页面展现技术晾在一边了,Extjs提供的强大控件和扩展能力已经足够满足设计需求,当然缺点也不少- - 这个后面再说

       由于Extjs完全替代了页面表现层,所以表现层和业务层的数据交互设计就显得尤为重要,下面说下我接触过的2个系统的架构设计

1)  兼容Struts的数据交互设计

这个是最近OA项目中用的方法,当系统中有大量表单或者从原有struts系统升级改造的话,这样的方法会减少不少原业务代码的修改。

 

 

 

  Extjs所有的数据获取,包括表单和GridTreeAjax调用的数据,全部从Struts Action中获取,在Action里面可以返回数据JSON字符串,也可以通过StrutsForm直接映射到Extjs表单。

缺点也很明显:臃肿的系统层次,相当于再Struts上面再做了一层,而且当你页面的AJAX调用非常多的时候,Action就会显得比较混乱,而且也要注意Action的线程安全问题

 

2)  个人觉得比较理想的设计

引入DWR,来连接Extjs和业务逻辑层,ExtjsAjax调用直接通过DWR proxy访问后台的业务Service 或者EJB

 

 

其中把事务拦截在业务接口层,Façade类设计为单例模式,这样整个系统就简洁很多了。由于Ext的控件初始化的时候都是传入参数对象,所以用Dwr来做数据传输的话,可以直接在Java后台组织Ext控件参数类 然后直接返回到页面初始化控件,这样就可以实现很多诸如动态表单,自定义界面等效果(后面会慢慢说到)

DWRProxyExtjs官方Forum可以找到,这里我贴一个我用的蛮爽的..

你可能感兴趣的:(设计模式,Ajax,struts,DWR,ext)