中国开发网: 论坛: 程序员情感CBD: 贴子 690686
haitao
J2EE Pet Store样例程序是一个“把简单的问题复杂化”的典型,Java开发社区的最大恶习是把应用开发当科学研究,开发人员的学习时间大大超过工作的时间,而工作成效却往往不如……
【J2EE Pet Store样例程序是一个“把简单的问题复杂化”的典型,Java开发社区的最大恶习是把应用开发当科学研究,开发人员的学习时间大大超过工作的时间,而工作成效却往往不如.Net及PHP的开发者】

编程模型概述 (版本1.1 Leebai/2006.04)


--------------------------------------------------------------------------------

概述

7wxAop是一个基于Ajax概念的Web开发框架,由浏览器端的7WX框架和服务器端的AOP框架构成。“7WX”是“XML”翻转过来的形状,其含义为“非XML的中客户(Ajax)框架”,前端程序只依赖DOM和Javascript,不需要XML。“AOP”是Action Orient Programming的缩写(不同于Aspect Orient Programming的AOP),强调后端编程以Action(或者叫Request、Command、Service)为中心,把每个HTTP Request的处理过程都看做一个独立的业务逻辑Service。

目前的AOP只实现了for Java的版本,要在Servlet容器中运行。在AOP for Java 中,后端应用程序是一个包含一组Action实现代码的Servlet,复杂的业务系统由数个Servlet构成。由于后端只实现单纯的业务逻辑代码,因此代码数量能明显减少。

7WX下的前端程序都是一些含脚本代码的静态HTML文件,由于框架的功能封装,应用程序要写的脚本代码也是很少的。

7wxAop并非Web2.0和Ajax浪潮下的产物,其技术来自2000年的一个电子商务系统项目的"商务洽谈室"模块,框架主体程序在2001-2002年间基本完成,并在很多软件项目中得到应用。2005年Ajax概念被广泛接受,7wxAop经过局部改进,升级为目前的1.1版本;2006初,进一步改进了前端框架7WX,增加了对Firefox浏览器的支持。

设计目标
7wxAop的设计目标是实现简单、高效、低成本的Web应用开发。相比之下,Ajax所能带来的“无刷新的用户体验”却更象一个副产品。

7wxAop力图降低对开发人员的技术要求,用7wxAop开发应用系统,开发人员不用学习XML、JSP、标记库、具体的Servlet API、EJB、JMS、JNDI、O/R Mapping、设计模式、UML、RUP...等等花样繁多的技术。7wxAop认为,95%以上的Web软件项目用不着太复杂的技术,7wxAop能让普通开发人员把常规项目更快更好地完成,至于余下5%的高级项目,让高手们去想办法好了:-)。在7wxAop看来,J2EE Pet Store样例程序是一个“把简单的问题复杂化”的典型,Java开发社区的最大恶习是把应用开发当科学研究,开发人员的学习时间大大超过工作的时间,而工作成效却往往不如.Net及PHP的开发者。7wxAop认为用Java做后端系统是目前最好的选择,但基于J2EE的开发工作要简单化。

B/S通讯模式
Ajax框架的核心是浏览器和服务器之间的异步通讯,通常的Ajax程序使用非W3C标准的 XMLHttpRequest 作为通讯组件,7wxAop没有用XMLHttpRequest,而是采用简单的IFrame。从7wxAop的实践看,封装良好的IFrame通讯机制比XMLHttpRequest更好用,也更易用。

在7wxAop下,浏览器访问服务器端的Action通过一个简单的callServer(servletName,actionName,data)函数(7wxAop不追求绝对的面象对象编程),如果Action执行中有问题(包括程序错误及程序提示),框架自身会把信息报告给用户,不需要前端开发者编程处理;如果Action被顺利执行,则会回调名为on_actionName()的函数,前端编程者要做的就是实现这个函数。

callServer()中的data参数就是要提交给服务器的数据。data可以是简单的url参数,如“userid=zhangsan&password=zs”;也可以是一个Form元素,如loginForm。由此可以看出,7wxAop下向服务器发送数据是很简单的,不需要将数据来回转换。

在回调函数on_actionName()中,前端代码可以访问返回数据buffer中的数据,如 buffer.userName 。buffer中的数据都是Javascript变量,可以直接引用,不像XMLHttpRequest中还要解析一翻。因此,7wxAop下使用后端返回数据也比XMLHttpRequest方式简便。返回数据有简单变量、多属性对象和数据集(形式上是数组,由于Web协议的无状态性和请求返回数据的容量限制,数据集用数组存放是最佳的)三种,数据集的元素可以是含多个属性的对象,也可以是数组。

B/S通讯举例:对于用户登录操作,在7wxAop下的前端代码如下:


<!-- 定义一个id为"loginForm"的标单,含用户id和口令输入域,按钮onclick调用login() -->
function login(){ callServer("UserServlet","login",loginForm); }
function on_login(){ alert("您好," + buffer.userName + "!"); }
<!-- 其他登录错误及提示7wxAop系统自动处理 -->
我的blog:http://szhaitao.blog.hexun.com & http://www.hoolee.com/user/haitao
--以上均为泛泛之谈--
不尽牛人滚滚来,无边硬伤纷纷现 人在江湖(出来的),哪能不挨刀(总归是要的)
网络对话,歧义纷生;你以为明白了对方的话,其实呢?

您所在的IP暂时不能使用低版本的QQ,请到:http://im.qq.com/下载安装最新版的QQ,感谢您对QQ的支持和使用

相关信息:


欢迎光临本社区,您还没有登录,不能发贴子。请在 这里登录