阅读:56664次   评论:31条   更新时间:2011-05-26    

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即可。

SimpleFramework框架的起因及发展历程 Top

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”的含义及特点 Top

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成功案例及适用领域 Top

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

SimpleFramework:已有成功案例为:

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

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

SimpleFramework最适合的领域为:

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

SimpleFramework面向群体及学习资源 Top

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

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


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

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



SimpleFramework和Struts的对比 Top

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

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


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

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

SimpleFramework相对Struts,有以下不足:

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

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

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

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

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

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


SimpleFramework充分体现了上述原则:

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


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

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作为开源项目的用户参与度 Top

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

SimpleFramework:

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

SimpleFramework团队起源,成员及分工 Top

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的未来发展目标跟计划 Top

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文档、例子和一些必要的培训视频。

网友观点 Top

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

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

引用
linliangyi2007 写道
项目是要支持的,
但是,对于要做互联网应用??做blog ,消息,圈子?这样的架构可以么?!

个人感觉sns与企业应用差异很大的!

给个诚恳的建议,不要把框架做成万金油,那样很容易做成废材了





虽然Simple 系统提供了大量的组件,但这些组件其中一部分只是满足一般性的需求,也有功能强大的组件。当然,Simple 提供给用户接口是可以轻松定制自己的组件来实现更复杂,更特殊的功能。



定制组件也是代码打开方便之门,在Simple 系统中可以通过如下三种方式来定制组件.

(一)   继承原有的组件

这是最简单的组件定制方式,通过继承原有的组件类,比如 AbstractAjaxRequestHandle , AbstractTreeHandle 等。

并在子类中扩展父类的功能。 可以参考Simple 的入门例子 Helloword  使用的Ajax 组件就是采用了这种方式定制的组件。



(二)  组合原有的组件

更为复杂的组件定制方式是将多个原有组件组合在定制组件中. 比如: 评论,投票,类目组件等。 (后续补充例子)


(三)  完全重写组件

如果继承和组合都无法满足我们的特殊需求,需要采用这种方式来定制组件。通过这中方式定制的组件需要继承Simple 的基类,并实现组件接口。



针对上面的理论介绍,根据实际会对每个使用方式写个官方API,学习并使用Simple 兴趣是最好的老师,希望有问题多在论坛中讨论,也可以直接留言给我们。
29 楼 eppen 2011-09-14 13:17
dada 写道
看了下demo项目,从前端角度看生成的代码不规范的地方不少,这种更类似组件库的框架还是定位在面向企业应用的快速开发上把(类似dorado和djfocus),用来做web应用绝对是吃力不讨好的。

web应用和企业应用 区别在什么地方?
28 楼 wb2008 2011-05-23 13:41
<html><html
27 楼 haiyuanak47 2011-05-19 16:28
支持,希望越来越好
26 楼 retfu1 2011-05-09 17:12
[b][/b][i][/i][u][/u]
[url][/url][flash=200,200][/flash]
25 楼 redjini 2011-05-04 10:11
linliangyi2007 写道
项目是要支持的,
但是,对于要做互联网应用??做blog ,消息,圈子?这样的架构可以么?!

个人感觉sns与企业应用差异很大的!

给个诚恳的建议,不要把框架做成万金油,那样很容易做成废材了


嘿,还是要赞一个。但别想法太多把自己给搞迷糊了!
24 楼 BlueDream348 2011-05-04 09:20
zgw06629 写道
sam.ds.chen 写道
引用

IT世界里有一句话:不要重新发明轮子(Don’t Reinventing the Wheel)


请问,这句话出自谁人之口?
你可以说Don't look at my ass, 也可以说Don't be looking at my ass. 但是你不能说Don't looking at my ass.

嗯 犀利

明显的语法错误,可见这句话是假的。。
23 楼 ydlccm 2011-05-04 08:49
加油,向你们学习
22 楼 zhanjia 2011-04-20 23:59
组件化的思想本来就是必然的趋势,无论是页面的组件,还是各个项目都要用到的权限控制、用户权限管理、日志管理等业务组件。

框架的发展,总是为了总结、提供更好的经验,提供更多通用的东西,让更多的人不需要重复写代码,让代码、功能更加规范,让程序员们更专注于业务功能的实现。

对该框架还没有太多的研究,但支持是绝对的,只有我们的支持,才会有更多更好的框架产生
21 楼 moses3017 2011-03-23 01:20
这个的框架又有什么不同呢?
20 楼 egooooo 2011-03-09 15:06
希望simpleframework越来越好
19 楼 suhuanzheng7784877 2011-03-02 13:05
中国开源的项目不可谓不多,但是能引起大家关注、使用的、比较少,很多还是用国外的。我觉得还是支持,支持~开发出中国人自己的、成熟的、类似SSH框架。毕竟人家作者跨出了这一步!
18 楼 joyoytj 2011-02-14 09:54
linliangyi2007 写道
项目是要支持的,
但是,对于要做互联网应用??做blog ,消息,圈子?这样的架构可以么?!

个人感觉sns与企业应用差异很大的!

给个诚恳的建议,不要把框架做成万金油,那样很容易做成废材了



有些人总是过于自信,总想发明万能工具,想以此解决所有问题。
17 楼 zhangguicheng12 2011-02-10 16:00
16 楼 erikchang 2011-02-07 12:46
都说自己的好!我只相信市场!
15 楼 ricoyu 2011-01-27 21:39
PreparedStatementCallback; SQL [update simple_user set address=?,birthday=?,blood=?,departmentId=?,description=?,email=?,homePhone=?,hometown=?,id=?,marriage=?,mobile=?,msn=?,name=?,officePhone=?,oorder=?,postcode=?,qq=?,sex=?,status=?,text=? where id=?]; Data truncation: Data too long for column 'msn' at row 1; nested exception is com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column 'msn' at row 1

我在他们网站完善资料时爆出的exception
14 楼 jysemel 2011-01-15 11:28
感觉挺好的,支持一下
13 楼 wellpeny 2011-01-07 15:28
12 楼 zgw06629 2011-01-07 10:41
sam.ds.chen 写道
引用

IT世界里有一句话:不要重新发明轮子(Don’t Reinventing the Wheel)


请问,这句话出自谁人之口?
你可以说Don't look at my ass, 也可以说Don't be looking at my ass. 但是你不能说Don't looking at my ass.

嗯 犀利
11 楼 dada 2011-01-05 18:27
看了下demo项目,从前端角度看生成的代码不规范的地方不少,这种更类似组件库的框架还是定位在面向企业应用的快速开发上把(类似dorado和djfocus),用来做web应用绝对是吃力不讨好的。
10 楼 volking 2010-12-30 12:19
意义不大。。。
9 楼 yin_bp 2010-12-24 23:09
俺利用业余时间也做了套小组件,目前刚搭建了个论坛,欢迎大家灌水。
http://61.187.64.200:800/
8 楼 numbone 2010-12-24 11:20
支持中国化mvc框架
7 楼 linliangyi2007 2010-12-23 21:22
项目是要支持的,
但是,对于要做互联网应用??做blog ,消息,圈子?这样的架构可以么?!

个人感觉sns与企业应用差异很大的!

给个诚恳的建议,不要把框架做成万金油,那样很容易做成废材了
6 楼 sam.ds.chen 2010-12-23 12:52
引用

IT世界里有一句话:不要重新发明轮子(Don’t Reinventing the Wheel)


请问,这句话出自谁人之口?
你可以说Don't look at my ass, 也可以说Don't be looking at my ass. 但是你不能说Don't looking at my ass.
5 楼 linleizi 2010-12-22 21:54
4 楼 seekgirl 2010-12-22 11:49
支持社会化网络应用
3 楼 ctfzh 2010-12-22 00:17
支持SimpleFramework
2 楼 mj2342003 2010-12-21 21:06
好东西,虽然刚开始学习框架,发现很多东西都有现成的 

发表评论

您还没有登录,请您登录后再发表评论

文章信息

Global site tag (gtag.js) - Google Analytics