写点什么

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

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

    阅读完需:约 12 分钟

AI 大模型超全落地场景&金融应用实践,8 月 16 - 19 日 FCon x AICon 大会联诀来袭、干货翻倍!

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

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

关注

评论

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

浅谈 REST API 身份验证的四种方法

wljslmz

REST API 6月月更

IP核是什么?有什么类型?半导体IP核全攻略

龙智—DevSecOps解决方案

知识产权 半导体 芯片开发 半导体IP核 IP核管理

转转统一权限系统的设计与实现(设计篇)

转转技术团队

权限系统 rbac

“多元化”通证经济模型:DAO的神经和血液

CECBC

95后阿里P7晒出工资单:狠补了这些个技术栈,真的香啊

Java全栈架构师

Java 程序员 面试 架构师 Java面试题

Java Core 「9」J.U.C 同步工具类-1

Samson

学习笔记 Java core 6月月更

C++ 静态反射在网易云信 SDK 中的实践

网易云信

c++ 开发工具

如何针对海外不同地区进行音视频自动化测试?丨Dev for Dev 专栏

声网

自动化测试 Dev for Dev

如何做好产品管理

易成管理学

数据质量管理

奔向架构师

数据治理 数据管理 6月月更

揭秘攻防演练中红队需要什么样的人才

穿过生命散发芬芳

6月月更 攻防演练

数字人民币预付式消费的监管之道,智能合约能不能解决所有问题?

CECBC

盘点一些好用且小众的 Markdown 编辑器

宇宙之一粟

markdown编辑器 6月月更

vue prop传递数据

小恺

6月月更

一文带你认识HTML

未见花闻

6月月更

研究uni-app的第五天

恒山其若陋兮

6月月更

官宣!Apache Doris 从 Apache 基金会毕业,正式成为 Apache 顶级项目!

SelectDB

Apache 数据库 apache doris

【LeetCode】数组中的 k-diff 数对Java题解

Albert

LeetCode 6月月更

DevStream 成为 CNCF Sandbox 项目啦!- 锣鼓喧天、鞭炮齐鸣、红旗招展、忘词了。

胡说云原生

开源 cncf DevStream

leetcode 198. House Robber 打家劫舍(中等)

okokabcd

LeetCode 动态规划 数据结构与算法

测试基础之:面试的信心来源于过硬的基础

甜甜的白桃

软件测试 核心竞争力 测试开发 功能测试 6月月更

网站制作FAQ页面必要性及方法

小炮

【用户文章转载】版本管理这件事,没有偏执,惟有极致

龙智—DevSecOps解决方案

游戏开发 版本管理 CI工具链 周版本制度

八大误区,逐个击破(3):在云上,变更和数据的管理都不足为虑

龙智—DevSecOps解决方案

atlassian云版 版本选择 迁移上云

通过DAO的现状,看Web3最具影响力的基础设施M-DAO

小哈区块

【网易云信】C++ 静态反射在网易云信 SDK 中的实践

网易智企

c++ 开发工具

力扣每日一练之二维数组上篇Day4

京与旧铺

6月月更

再仿个人主页来看 GetX 和 Provider 之间的 PK

岛上码农

flutter ios 前端 安卓 6月月更

el-select数据量过大引发卡顿,怎么办?

华为云开发者联盟

前端 测试 数据 华为云

频频破圈,走向百业:大模型的毕业季

脑极体

阿里云智能编码插件进行了一个上新大动作

阿里云云效

云计算 阿里云 云原生 代码

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