你在使用哪种编程语言?快来投票,亲手选出你心目中的编程语言之王 了解详情
写点什么

采访开源 Web 框架 SimpleFramework 开发团队

2010 年 12 月 01 日

在技术的道路上,永远不缺乏充满激情、勇于创新的人们。只要我们善于思考、发现、总结与提升,就能创造出造福社区、为他人所用的好东西。而 SimpleFramework 就是一个很好的例子。

在其网站开放一个月之后,InfoQ 有幸采访了SimpleFramework 的开发团队(SD:SimpleFramework 开发团队):

InfoQ:目前市场上的 Web 框架有很多,譬如 Struts、Spring 等,为什么还要创建 SimpleFramework 呢,能够为 InfoQ 的读者简单介绍一下该框架的由来、发展及现状吗?

SD:Simpleframework 起始并非一独立框架,而是对现有框架(如 Struts)的业务性补充。最初,利用 Filter 机制和 XML 格式的业务描述来实现请求的可配置扩展处理,将 Struts 等框架中的一些公共功能以组件(如 AjaxRequest、Submit 等)的形式提供,基于组件来实现 UI 和业务(逻辑)功能。随着这一套思路在很多大型企业级应用中使用,一套基于 Filter“后处理”技术的、完整的 MVC2 和组件化的 WEB 应用开发模式也日渐成熟。它利用 MVC2 实现关注点分离,利用组件复用实现缩短周期、节约成本、提高质量等目的。SimpleFrameworkV3.0 已经发布,它包含核心组件库、基本组件库、业务组件库和扩展组件库。

InfoQ:从其功能上看,它与 Struts 具有最多的相似点,请问 SimpleFramework 较之 Struts 的优势和劣势各是什么?

SD: Struts2 相较,SimpleFramework 的优势和劣势简要如下:

优势:

  1. 组件体系:声明式组件定义;开放的组件体系,丰富的组件(库)
  2. 可扩展性:可自定义或扩展组件,可按照给定规范整合第三方组件资源。
  3. 可积累性:可将模块 / 某类应用封装为组件,可构建业务型组件
  4. 可整合性:基于过滤器机制可整合既有应用资源。
  5. 实现模式:SimpleFramework 不仅仅是 MVC2 的实现,还具有完整的组件化的 Web 业务支撑能力。

劣势:

  1. SimpleFramework 没有 Struts 的成熟度及用户群。
  2. SimpleFramework 暂时还没有丰富的第三方资源。

InfoQ:“后处理”是 SimpleFramework 的技术基础,请您解释一下何为“后处理”,Simpleframework 在这个过程中都做了些什么?

SD:在介绍“后处理”之前,有必要先介绍一下过滤器。许多因素决定了过滤器的重要性:首先,它提供了将公用任务封装成可重用单元的能力;其次,过滤器可用于转换来自 Servlet 或 JSP 页面响应。Web 应用的基本任务是格式化数据后返回客户端。将过滤器作为 Java Servlet 规范的一部分,为开发人员提供了实现可重用跨容器转换组件的机会。过滤器可以实现多种不同类型的功能,诸如:基于用户身份的阻断式认证请求、Web 应用的用户日志和审计、图像转换及地图缩放、减小下载体积的数据压缩、特定区域的请求 - 响应本地化实现、适应多类客户端之 WEB 应用的 XML 内容 XSLT 转换、标记化、触发资源访问事件、MIME 类型链接、缓存处理等。这些仅是过滤器应用的很小部分而已,过滤器的应用还有更多。

而 SimpleFramework 用过滤器来做“后处理”——拦截 HttpResponse 并导向 SimpleFramework 作“二次处理”:分派请求逻辑;依据“组件声明”生成或渲染组件、生成代码、处理业务规则、重构响应内容等;其并结合其封装可重用单元和转换页面响应的能力来实现组件处理机制,构建可重用的组件。据此,SimpleFramework 已具有完整的 MVC2 特征。

其工作机制如下图所示:

InfoQ:SimpleFramework 的另一重要特点是“组件”的概念,组件能够大大减少程序员的开发工作量。在 SimpleFramework 中,组件能做什么,V3 中已提供的组件有哪些?

SD:SimpleFramework 提供了大量可重用组件,并以一定的接口 /API 方式暴露给用户,供应用层调用。

  • 核心组件:提供业务无关的功能性处理组件,如 AJAX 请求、表单提交、页面包含、验证等。
  • 基本组件:提供 Web 应用开发所需的 UI 组件,如 Layout、Tree、Menu、Window、Grid、Upload 等。
  • 业务组件:提供业务相关的模块或公共功能级组件,如工作流、论坛、投票、评论、字典选取、异常、系统日志等。

其组成如下图所示:

InfoQ:在您提到的核心组件中包含 AJAX 组件。它能够自动生成 AJAX 客户端代码,自动加载到浏览器并在浏览器中执行。那么,当框架提供的 AJAX 组件不能满足用户所有的 AJAX 需求时,V3 提供何种扩展机制供用户来扩展组件的功能?

SD:普通 AJAX 从技术上讲就是 AjaxRequest 完成基于 Ajax 的请求及响应过程,通过 XMLHttpRequest 对象可以很容易实现其基本功能,但 AJAX 组件通过封装 AjaxRequest 可以做更多的事情,在 Simpleframework 中 AJAX 组件有以下特点:

  1. 不需要或少量的 js 代码,可能在回调函数中配置。
  2. 后台提供了 Handle 接口,开发人员可以专注处理业务逻辑。
  3. 自动处理返回的内容,其中采用动态 js、css 装载技术,不需要关心返回的内容中是否含有 js 或 css。

Simpleframework 提供组件扩展机制:其一,每一种组件都提供了相应的业务接口,用户可以继承并覆盖相应的方法来实现自己的业务需求;其二,如果现有的组件和当前的业务需求确实存在巨大的差异,可以按着组件规范定义一个新的组件,并注册到 Simple 系统中来。

一般而言,这两种扩展机制已能满足绝大多数的用户扩展需求,另外 SimpleFramework 是开源产品,用户还可以在遵循协议的前提下基于源码扩展新的组件实现机制。

InfoQ:据我所知,SSH(Struts+Spring+Hiberate)是目前应用极为广泛的一套框架组合,而且很多程序在这方面都有很深的积累,那么 SimpleFramework 能够与之兼容吗?如果一起使用,您建议二者如何配合使用,即推荐使用 SSH 中的哪些功能、SimpleFramework 的哪些功能?

SD: SimpleFramework 完全可以和 SSH 兼容使用,因为 SimpleFramework 的基于过滤器的“后处理”机制决定了这一点,完全可以将 SimpleFramework 看做 SSH 或 Struts 的一个“过滤器”来应用。

SimpleFramework 与 SSH 配合使用时,建议如下:

SSH

SimpleFramework

Spring:Bean Manager、IoC

Hibernate:ORM

Struts2: FormBean、Action

1) 配置为 Struts 的过滤器。

2) 可以使用 Simpleframework 的核心组件、基本组件和业务组件。

3) 可用 Hibernate 替代 SimpleFramework 的 DAO 层。

4) Struts 的 Action 继承 SimpleFramework 的相关抽象类或实现 SimpleFramework 的接口作为 SimpleFramework 的业务类(Handle Class)。

InfoQ:SimpleFramework 已有哪些成功案例,它最适合于构建哪一类应用系统?

SD:在电力和远洋系统的办公自动化、电信的无线网络优化系统中经过大数据量和大并发用户的实战考验。官方网站即基于 SimpleFramework 组件搭建,目前已经提供:文件存储、个性页面、新闻资讯、社区交流等应用。

以SimpleFramework 的内容组件为基础,可作为构建互联网社区应用的支撑框架。以SimpleFramework 的基本和业务组件为支撑,可作为构建企业应用的Web 框架。

InfoQ:目前有没有该产品的路线图,近期会对 V3 做哪些方面的增强,能否跟我们的读者先透露一下?

SD: SimpleFramework 下一步的 RoadMap 规划如下:

  • 文档补充:对现有 SimpleFramework 文档做进一步的补充和完善
  • 内核优化:优化 SimpleFramework 内核代码,进一步优化 HTML 的解析速度和执行效率。
  • 组件优化:优化核心组件、基本组件,诸如组件代码生成和渲染效能,并添加一些常用的基本组件。
  • 应用服务:以业务组件中的内容组件为基础,为小型互联网社区应用提供快速解决方案(当前主要任务)。
  • 组件完善:完善机构组件、系统组件;将在后续的阶段中择机升级流程组件,以提供完整的流程业务支撑组件。

欲了解更多信息,请访问 SimpleFramework 网站

时至今日,SimpleFramework 的核心团队成员有四人,以下是他们的介绍:

陈侃,是 simpleframework.net 的首席架构师和共同创始人。在 2001 年秋季全面转向对 Java,并对 Java 情有独钟,发起了 simpleframework 开源项目,并参与了许多前沿技术的开发(如 工作流、AOP、脚本语言和 Web 等),技术之外,还有一手飞车绝技,酷爱打羽毛球。

赵贵根,系统过程博士,团队的精神领袖。为团队把控工作重点、难点和方向,曾参与过大型的 HIS 系统、电子病历、零售企业 POS 系统、中小企业 ERP 系统、华北电力和国家知识产权局 OA 系统、国家电网电能采集系统、联通资源管理系统的分析设计和建设过程。目前正从事 SimpleFramework 的开源项目并致力于 SimpleFramework 技术与思想的推广。

陈圩贤,中科院硕士,多年从事安全领域的研究和技术工作。目前致力于 simple 的宣传和推广工作。爱好打球、登山、游泳。

刘彬,目前从事企业信息化方面的研发及架构工作,有 Java 大型开发项目经验,兴趣的技术领域是 SOA、Workflow、J2EE 编程,Simpleframework 的开源项目建设,并致力于 Simpleframework 问题的解决和技术推广。


感谢崔康张凯峰对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家加入到 InfoQ 中文站用户讨论组中与我们的编辑和其他读者朋友交流。

2010 年 12 月 01 日 00:006808
用户头像

发布了 184 篇内容, 共 66.9 次阅读, 收获喜欢 3 次。

关注

评论

发布
暂无评论
发现更多内容

【得物技术】网络优化——域名解析原理&实践

得物技术

网络 域名解析 域名 得物技术 实践

已跪!Java全能笔记爆火,Java教程/Java包/Eclipse安装指南全有

牛哄哄的java大师

Java

面试:某云面试题目整理

程序员架构进阶

Java 面试 自我提升 28天写作 4月日更

2021零食品类全渠道研究报告; 新华社调查音乐App诱导重复消费,qq音乐、网易云音乐、酷狗音乐被点名

󠀛Ferry

四月日更

SpringCloud-技术专题-Feign组件基本使用(2)

李浩宇/Alex

springmvc SpringCloud Hystrix Fegin

InfoQ & 声网Agora 技术开放日邀请函

Jessie

音视频 声网

Serverless的定义

刘宇

技术探索系列 - 轻松带你掌握 JMM(1)

李浩宇/Alex

Java JVM JMM 并发 5月日更

fastadmin+xunsearch题库系统搭建教程

一颗小树

php thinkphp fastadmin xunsearch 题库系统

2021年十大突破性技术

石云升

读书笔记 5月日更

引入:从云计算到Serverless

刘宇

不懂就看!P7大牛珍藏的Java反射详解笔记,从入门到实践太香了

java专业爱好者

Java

高校软件IT专业大学生课外培训调查问卷

穿过生命散发芬芳

行业分析能力考核

这是我在金三银四收到的第五个offer,美团Java岗(附面经)

神奇小汤圆

Java 程序员 架构 面试

音频变速变调原理及soundtouch代码分析

floer rivor

音视频

​太厉害了,终于有人把Spring条件注解讲明白了,送你上岸!

飞飞JAva

spring

手机屏幕投屏到桌面的离线方案

黄敏

又一个免费良心的下载站,答应我:别再下到流氓软件了。

彭宏豪95

ios 效率 工具 下载 4月日更

本文标题不能描述本文内容

小天同学

读书 哲学 读后感 4月日更

了解代理服务器

进击的梦清

nginx Linux 运维 代理原理

北美亚特兰大一金融服务公司面试总结

HoneyMoose

从品牌投放策略新逻辑,看户外广告成为投放首选原因

󠀛Ferry

5月日更

阿里内部资料居然在GitHub爆火,面试如虎添翼

神奇小汤圆

Java 程序员 架构 面试 计算机

对于即将工作的IT大学生,该如何变强?

cv君

程序人生 IT 科技 问卷 有意义

IT 专业大学生被培训机构“渗透”情况调查

梦想橡皮擦

签约计划

A “word-wrap” functionality(一个字符串包裹函数)

HoneyMoose

清华教授说:这不是我教的Java运算符知识。学生:反正我学会了!

java专业爱好者

Java

聆听极致 ——声网 Agora

cv君

算法 音视频 科技 声网 能力

万字长文讲述我是怎样保送清华的|寒门学子的奋斗史(四)

程序猿石头

程序员 码农 逆袭 大学总结 读书总结

当代软件IT大学生的技术学习之路

Nydia

签约计划

网络攻防学习笔记Day1

穿过生命散发芬芳

5月日更 网络攻防

技术为帆,纵横四海- Lazada技术东南亚探索和成长之旅

技术为帆,纵横四海- Lazada技术东南亚探索和成长之旅

采访开源Web框架SimpleFramework开发团队-InfoQ