陕西品诚热力有限公司:开源Web框架SimpleFramework开发团队访谈(十四)

来源:百度文库 编辑:九乡新闻网 时间:2024/05/03 08:05:46

Simpleframework是基于 Intercepting-Filter模式和MVC2模式(我们称之为:后处理模式,After-Processing Pattern),基于“应用即组件,组件即应用(Application are components,component can be a application)”理念采用Java 技术实现的Web应用级框架。

其核心价值在于提供了以声明方式来描述组件行为的机制,该机制有效整合了客户端的UI视图、处理逻辑、存取访问控制策略、校验规则,以及服务器端的数据持久化、分布式缓存、业务规则等的一体化应用。提供一套完整的Web UI组件来简化和加快AJAX/富Web应用(Rich Internet Application)的构建、部署及维护进程,从而达到降低Web应用开发成本、缩短开发周期和提高应用效能的目的。

从2004年推出1.0版至今,SimpleFramework已经推出了3个大版本。最初,它是一个声明式组装HTML的雏形,后采用了基于过滤器(Filter)的后处理技术来实现AJAX和组件及其资源 ,最新版本已经实现了开放的组件体系,基于标准化的组件标准可以按需定制业务相关的组件。

本期访谈我们有幸请到了SimpleFramework开发团队的4位成员,陈侃赵贵根刘彬,陈圩贤,希望能帮助有兴趣的开发者加深对SimpleFramework的了解,以下为访谈实录。

JavaEye:欢迎大家推荐更多开源项目给我们,支持中国的开源项目发展,如果您和您的团队希望展示你的创业理念和有趣之处,或者有朋友在创造这样的价值,请联系我们,发站内短信给JavaEye管理员或者发信到webmaster@iteye.com即可。

目 录 [ - ]

  1. SimpleFramework框架的起因及发展历程
  2. “SimpleFramework”的含义及特点
  3. SimpleFramework成功案例及适用领域
  4. SimpleFramework面向群体及学习资源
  5. SimpleFramework和Struts的对比
  6. 关于SimpleFramework“业务(型)组件”的理念及实现
  7. SimpleFramework与现在流行的框架和应用程序的兼容性
  8. SimpleFramework作为开源项目的用户参与度
  9. SimpleFramework团队起源,成员及分工
  10. SimpleFramework的未来发展目标跟计划
  11. 网友观点

SimpleFramework框架的起因及发展历程

JavaEye:Java Web框架现在有很多,从堪称MVC代表WEB框架鼻祖的Struts,到面向对象的Tapestry、Wicket,采用XUL的ZK,以及后起之秀的Seam、SpringMVC如雨后春笋,层出不穷,IT世界里有一句话:不要重新发明轮子(Don’t Reinventing the Wheel),请问是出于怎样的原因,促使你们想要创建SimpleFramework这个框架?请介绍一下SimpleFramework的发展历程吧。

SimpleFramework:我们构建SimpleFramework的原因主要有三点:

      1.基于后处理与HTML解析可以弥补现有Web框架“阶段性”方案的不足。
      2.以配置化和组件化的方式支撑WEB应用前后端的全程或部分开发,减少工作量,提高效率。
      3.实现组件的规范化、业务的组件化以及业务和应用资源的复用和持续积累。

      关于SimpleFramework的发展历程,有一个图可以形象地表示:
Simple最早来自工作流Web客户端的自定义表单功能。当时我们曾考虑过采用标签库或XForm来实现,为避免表单定义和JSP语法的混搭,决定采用XML来描述表单的元信息,同时为更好的兼容标签库和Struts等基于Servlet的技术,最终选用了Filter拦截响应的HTML流,此即Simple 的起源。

但是Simple V1仅处理了表单,在使用过程中逐步发现其实完全有能力处理整个请求页面,如同样用分离的XML去描述相关的业务,会极大减轻开发工作,更重要的是,可以定义一套基于XML描述的组件规范,从而实现业务相关的代码级积累,于是诞生了Simple V2。

目前,最新的SimpleV3又对数据访问层进行了优化,实现目标如下:

1.为组件访问DB、Lucene、No-SQL提供一致的编程接口。
2.Bean获取提供更灵活的架构,诸如通过配置可选用基于数据库、缓存,或分布式缓存的支撑方式。
3.数据访问更高效,可满足超大规模数据处理的业务需求。

同时SimpleV3规范和加强了组件功能,强化客户端,增加了渲染方式,可以实现灵活的数据访问。

“SimpleFramework”的含义及特点

JavaEye:给这个框架命名为“SimpleFramework”的含义是什么?它有什么特点?

SimpleFramework:SimpleFramework如此命名的含义为,提供一个简化(开发过程的)框架,帮助大家做简单实用的软件!

由于它贯穿始终的核心理念是“组件构建,业务复用,资源积累”,决定了有以下特点:

1)全程覆盖:具有可支撑Web应用开发所需的成体系各类组件。
2)组件规范:具有规范的组件接口定义,基于同一规范实现组件。
3)业务组件化:应用或模块级可复用的组件化封装。
4)可持续积累:应用资源及业务组件的可持续积累。
5)组件化开发:开箱即用和全程覆盖的配置化组件。
6)HTTP原生态:保留HTML/HTTP及请求/响应的原生态。
7)无码AJAX应用:内置AJAX引擎用户少用或不用Javascript。
8)资源继承:对既有应用资源的有效整合及平滑迁移。
9)有效补充:对现有Web框架或技术的非侵入式补充。
10)开放架构:开放及随需扩展的组件体系架构。
11)无缝兼容:对现有Web及新技术的无缝兼容。
12)简单实用:组件化配置化的Web应用开发过程。

SimpleFramework成功案例及适用领域

JavaEye:请介绍一下SimpleFramework已有哪些成功案例,它最适合的应用领域是什么?

SimpleFramework:已有成功案例为:

在电力和远洋系统的办公自动化、电信的无线网络优化系统中经过大数据量和大并发用户的实战考验。

另外我们的官方网站就是基于SimpleFramework组件搭建,目前已经提供:文件存储、个性页面、新闻资讯、社区交流等应用。

SimpleFramework最适合的领域为:

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

SimpleFramework面向群体及学习资源

JavaEye:SimpleFramework面向的群体是哪些人?要掌握其使用需要哪些技能?有哪些资源可供开发者学习和应用?

SimpleFramework:这个框架适合两类开发者学习使用,如下图所示:


应用SimpleFramework,需要了解HTML、CSS、JSP/Servlet、Java等,当然,还需要了解SimpleFramework组件体系和它的简单流程。

我们的SimpleFramework官方网站上有很多专门的学习资源和文档,感兴趣的朋友可以到我们官网上下载。



SimpleFramework和Struts的对比

JavaEye:请比较一下SimpleFramework和Struts?相对于Struts,SimpleFramework有哪些优势?有哪些不足?

SimpleFramework:这个我们可以用一张图表来说明:


SimpleFramework与Struts相比较,优势如下:

1.基于后处理技术,可以不修改代码整合第三方框架或应用资源。
2.规范化的组件体系、业务型组件以及业务和应用资源的复用和持续积累方面做了大量的工作。诸如机构组件,内容组件,系统组件等。
3.配置化和组件化的开发方式,极大的简化应用工作并提升开发效率。

SimpleFramework相对Struts,有以下不足:

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

但是我们会尽力改善或改变这种状况。

关于SimpleFramework“业务(型)组件”的理念及实现

JavaEye:SimpleFramework的一个重要特点是“业务(型)组件”的理念,请具体谈谈在SimpleFramework中这是如何实现的?

SimpleFramework: SimpleFramework的一个重要特点就是“业务组件“,在一段时间内,Simpleframework曾经有”组件即应用,应用即组件“的提法,实际上也是指业务(型)组件或应用(型)组件,是指组件可以是一个完整应用/模块的封装,或者应用/模块可以封装为一个组件。

业务组件是一系列不可分割的业务活动,是构建专业化企业应用的功能级模块。业务组件的优势源于其两个相关但截然不同的特性:1)组件间松散耦合,具备应用灵活、响应快捷、适用性强的特点;2)组件内各活动高度聚合,对外提供高效优质的服务。将业务活动归类为组件时需考虑的因素包含:清晰的交互层面,公共的业务目标,紧密的组织单元,通用的处理流程,相似的业务活动,类似的数据特征。


SimpleFramework充分体现了上述原则:

1.基于组件构建企业Web应用(代码级复用)。
2.基于公共或可共享应用/模块封装为组件(功能级复用,诸如机构组件、论坛、投票等)。


SimpleFramework与现在流行的框架和应用程序的兼容性

JavaEye:SimpleFramework与现在流行的框架和应用程序的兼容性怎样?比如SSH(Struts+Spring+Hiberate)等?

SimpleFramework:
由于SimpleFramework采用拦截响应HTML流作“后处理“和CSS Selector实现组件绑定的实现方式,在理论上而言,SimpleFramework完全可以兼容现在流行的框架和应用程序,实际整合案例也可以证明这一点:在官方网站我们已经发布了SimpleFramework与 Struts2、FreeMarker及SpringMVC整合应用的例子。


关于SimpleFramework与SSH的兼容问题是这样的,二者完全可以兼容:

1)配置Simpleframework为Struts的(顶层)过滤器。
2)使用Simpleframework的核心组件、基本组件和业务组件。
3)Struts的Action可作为SimpleFramework的Entity/Bean。
4)Spring的Service可作为SimpleFramework的业务类(Handle Class)。
5)可用Hibernate替代SimpleFramework的DAO层。


SimpleFramework作为开源项目的用户参与度

JavaEye:作为开源项目,请问SimpleFramework社区现在的用户参与情况如何?

SimpleFramework:

官方网站(http://www.simpleframework.net/)上线约两月余,社区注册用户约为1000多人;已有很多企业计划基于SimpleFramework做应用开发。此外我们还开通了开发人员的交流群。

SimpleFramework团队起源,成员及分工

JavaEye:能否介绍一下你们的团队成员?你们通常如何分工?当时是怎样的契机或者原因令你们一起组成这个团队?

SimpleFramework:我们的团队成员共4人。


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


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


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

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

团队形成的过程比较简单了,大家在理念上一致并加入组织。关键在于大家在基于现有框架处理问题的时候,在解决方案与框架方面有共同的理念与认识,更希望对更多有相同困惑的人可以提供帮助,就形成了SimpleFramework团队。

SimpleFramework的未来发展目标跟计划

JavaEye:SimpleFramework的未来发展目标跟计划是怎样的?

SimpleFramework:我们的未来计划主要是4个方面:

1.社会化网络应用:SimpleFramework目前的重点主要在业务组件上,我们将以内容组件为基础,为小型互联网用户提供一套社会化网络应用(SNS),主要包括以Web2.0为基础的博客、资讯、点评、群组、空间等应用,这将首先在simpleframework.net网站体现出来,但区别于一般SNS应用,基于SimpleFramework的SNS更适合和现有系统或企业应用做整合,这一点,在讨论SimpleFramework与现有系统的整合已说明,对于基于组件开发的应用,同样适合。

2.流程迁移:由于目前人力等问题,流程组件还没有从老版本升级过来,我们将在后续的阶段择机升级流程组件,以提供完整的流程业务支撑。

3.性能优化:SimpleMVC现在已相当稳定了,不过,我们还是准备对HTML解析、代码渲染等部分加以优化,以提高其执行效率,并适当的添加一些常用的基础组件,如纯js的表格等。

4.文档补充:文档和教程是SimpleFramework目前最欠缺的部分,之前由于实现结构的不断调整,文档一直没有整理,但随着Simple MVC稳定,我们将很快推出API文档、例子和一些必要的培训视频。

网友观点

访谈发出后收到了很多用户的反馈,我们会定期将精华观点收集发表出来,供关注simpleframework的朋友参考,希望simpleframework可以有更好的发展,同时感谢各位积极发表观点的朋友们!

黑暗浪子:今天仔细看了一下simpleframework。我在它的官网上下了jar包,并查阅了一些入门文档。粗略的一瞥也说说自己的几个感受。首先,当我运行 demo时候,我发现很多web编程中的小应用都已经可以使用了,所要做的修改无非是贴近自己开发的项目的一些业务内容。但是基本功能都已经不需要开发人员自己开发了。这个其实是相当不错的。之前我做项目,很多类似于分页这样的功能都是从这个项目copy到那个项目,然后修修改改,能run就行了。如果是以simpleframework来做的话,这些都不需要在花心思去开发,simpleframework都已经形成了一套成熟的的基础组件库。这绝对是节省了开发人员很多时间。但是有几个我觉得还需要改进的地方。首先文档尤其是各个API的说明和使用要齐全点。特别是那些实现ajax组件的API最好每个都有小例子。其实研究东西,最好自己动手try一下,搞出来绝对很有成就感。还有就是正因为现在文档不是很齐全,在尝试中看到那些异常和错误信息我都不知道是因为做了什么才导致的。要是有个出错信息的QA自问自答形式的document,那绝对让很多兄弟姐妹少走很多弯路。还有就是现在maven挺流行的,要是能像springside使用maven来生成项目就给力多了。最后是本人自己的一个不请自请,能不能出个和Jrebel整合的例子啊?