QCon北京「鸿蒙专场」火热来袭!即刻报名,与创新同行~ 了解详情
写点什么

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

  • 2010-12-01
  • 本文字数:3573 字

    阅读完需:约 12 分钟

在技术的道路上,永远不缺乏充满激情、勇于创新的人们。只要我们善于思考、发现、总结与提升,就能创造出造福社区、为他人所用的好东西。而 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:007680
用户头像

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

关注

评论

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

深入解析Python并发编程的多线程和异步编程

不在线第一只蜗牛

Python 多线程 代码 并发

SD-WAN助力企业数据传输安全

Ogcloud

SD-WAN 企业网络 SD-WAN组网 SD-WAN服务商 SDWAN

国内行业桌面云解决方案哪家比较强?

青椒云云电脑

桌面云 云桌面 云桌面方案

如何利用Allure报告提升你的测试效率?

霍格沃兹测试开发学社

WiMinet 评说1.1:多跳无线网络的现状

Geek_ab1536

测试开发名企定向培养训练营,快速提升核心竞争力!

霍格沃兹测试开发学社

MES系统中的手动排产和自动排产-助力生产效率

万界星空科技

制造业 mes 万界星空科技 生产管理 自动排班

拼多多API助力商家提升销售效果和市场竞争力

技术冰糖葫芦

API 接口

2024-02-28:用go语言,有一个由x轴和y轴组成的坐标系, “y下“和“y上“表示一条无限延伸的道路,“y下“表示这个道路的下限,“y上“表示这个道路的上限, 给定一批长方形,每一个长方形有(

福大大架构师每日一题

福大大架构师每日一题

Sora,数据驱动的物理引擎

澳鹏Appen

人工智能 生成式AI sora 文生视频 视频标注

英特尔锐炫新旧驱动对比测评:新老游戏全方位进化!

E科讯

WiMinet 评说1.3:模拟式UDP中继技术缺陷

Geek_ab1536

“课-训-赛”育人才!南开大学闫晓玉老师分享Python实战类课程的教学经历

ModelWhale

Python 人才培养 数据科学 教学

一次投入,多倍回报,英特尔vPro驱动全新商用AI PC

E科讯

揭秘「 B 站最火的 RAG 应用」是如何炼成的

Zilliz

AI Milvus Zilliz LLM rag

如何生成速卖通平台的API密钥?

技术冰糖葫芦

API 接口

从 0 到 1 搭建亿级商品 ES 搜索引擎

字节跳动云原生计算

云原生 ES 云搜索

为什么您的网站需要美国主机CDN加速?一文解答所有疑问

一只扑棱蛾子

美国主机

WiMinet 评说1.2:多跳无线网络的困境

Geek_ab1536

欢迎参与2024年 OpenTiny 开源项目用户调研

OpenTiny社区

开源 前端 低代码 组件库

一文告诉你到底什么是低代码?

秃头小帅oi

探秘闲鱼商品详情关键词搜索电商API接口,让你轻松找到心仪的宝贝!

联讯数据

超越传统:人工智能赋能加持下的自动化测试

霍格沃兹测试开发学社

HFT算力合约模式系统开发丨技术详情开发

l8l259l3365

采访开源Web框架SimpleFramework开发团队_Java_马国耀_InfoQ精选文章