是一个通用的JavaWeb应用开发框架,核心代码开发于2001-2002年间,最初也叫“中客户”模型(意为介于胖客户和瘦客户之间,参见早期理论文档《中客户WEB应用程序总体模型(2001)》,从中可以看出本框架的最初构想,个人认为该文档对富客户端的理论阐述不差于2005年初Jesse James Garrett对Ajax的阐述)。
远在Ajax概念被普遍接受之前,7wxAop已经系统地归纳出一整套开发“非整页刷新的强交互Web应用程序”的方法论和实现模式,从最原始的7wxAop应用一直到2005年,7wxAop一直不使用任何JSP、Velocity等服务器端模板技术,所有界面全是静态的.html,动态数据全基于Ajax模式的异步获取和前台Render,可以说是最纯粹的Ajax应用。
与目前绝大多数Ajax工具仅侧重于表现层,以“改善用户体验”为主要目标相比,7wxAop早已超越该目标,更看重的是Ajax模式下的整体应用架构,其中包括与传统Web应用大不相同的后端服务构造、编程模式、安全性、可调试性、需求分析方法、开发管理、运行管理等等,这些都源于对HTTP应用的深刻理解。
7wxAop倡导的是Model/View模式的两层开发(不算数据层),在7wxAop中,控制层是隐含的,也不存在任何讨厌烦琐的配置XML。
7wxAop看到,面向对象编程与RDBMS之间存在严重的不匹配。7wxAop认为,要么业务实体本身没有状态需要持久化,就像各种界面组件、Web浏览器程序;要么业务实体不依赖于RDBMS能解决自身状态的持久存储问题,就像Photoshop、Office等桌面应用,否则不要想方设法把业务实体设计成实体对象,再想方设法保证实体对象与RDBMS的一致性。7wxAop认为这种被称为OR Maping的努力是混杂的、低效的、徒劳的,再怎么发展也是没有前途的。7wxAop发现,与丑陋的EJBQL/HQL相比,被世人遗忘的SQLJ其实更有借鉴潜质,于是7wxAop将Http的Request、Response引入SQL其改造成SQLHTTP(框架中称为AutoSQL),简洁高效地在浏览器UI和DB之间建立了直通桥梁。
7wxAop还看到,基于Ajax的数据库应用中,HTTP Request是对业务代码的天然切割。观察此前各种结构的程序,在界面层有窗体之间的天然切割,在数据库层有表之间的天然切割,而在业务层不存在任何这种天然切割,所以我们要费劲地使用结构化方法或面向对象方法将业务代码进行切割,其本质目的是不让代码成为铁板一块,难于开发和维护。看到这一点,我们会发现Web应用其实应该比以往任何其他结构的程序都容易设计。7wxAop将Request抽象成Action,所有代码围绕Action编写,称为面向动作编程Action Orient Programming(简称Action OP)。
基于上面的两点,7wxAop将Model层设计成以Http Request为基础的Actions集合,而Action 就是Action,不再分业务层、DAO、POJO...,因为一方面Action本身代码粒度适中(即一个Action的代码不会太多),另一方面绝大多数Action之间没有逻辑关系,代码之间自然解偶。在7wxAop中,Action本质上是无状态的,是UI层与DB层之间的简单桥梁;而SQL语句逻辑上也是无状态的,是用户与DB之间的桥梁,因此7wxAop设计了AutoAction/AutoSQL来支持数据库业务逻辑开发。
7wxAop中,还有其他几项原创性技术,你可以在技术文档和代码中看到。就像中客户理论比Ajax理论早四年提出一样,7wxAop框架中的技术元素也要比你目前看到的其他Ajax框架要前卫不少,如果你想预先看到两三年内Ajax和RIA领域会有哪些进展,不防参考一下7wxAop。
对于开发工作来说,7wxAop基于Action 的Model模型是健壮的、代码简洁的、易于开发+维护+测试的、程序员的工作量是可测量的、系统的复杂度是是易于评估的、给用户的项目报价是有谱的、开发进度是可控的、系统分析人员是不用占卜的、项目管理人员是不会两眼摸黑的、老板是不用发脾气的、客户是不会骂娘的,当然,信不信是由你的。
7wxAop是一个Ajax开发框架
7wxAop是一个MVnoC开发框架
7wxAop有自己的持久化模型(可选)
7wxAop有自己的安全(权限管理)模型(可选)
7wxAop内嵌应用服务器和数据库服务器(可选)
7wxAop内含基于Web的数据库管理工具、文件管理器
7wxAop带一个CMS系统和一个BBS(可选)