您所在的位置: 首页>>读书频道>>设计开发>>网站开发>>

1.2.1 什么是框架

http://book.51cto.com  2007-04-25 20:00  Patrick Lightbody/Jason Carreira/谭颖华,张云飞,.  电子工业出版社  我要评论(0)
  • 摘要:本节讲述框架和容器。从根本来说,WebWork是一个MVC框架,但同时它也是一个轻量级容器。为了帮助你更好地了解框架与容器之间的差别,我们将看一下两者各自所提供的功能,同时我们也将关注两者相关及特有的几种技术。
  • 标签:WebWork in Action中文版

在Rickard Öberg(WebWork的创造者和JBoss创始人之一)构建最原始版本WebWork的时候,他曾经说过:“框架的强大之处不是源自它能让你做什么,而是它不能让你做什么。”Rickard所说的话解释了什么是框架:框架使混乱的东西变得结构化。而Web应用程序框架则鼓励开发人员使用一系列框架所提供的基础类和类库,从而避免杂乱的JSP所造成的混乱。

我们再来打个比方。框架就像是一间有很多屋梁的房子,当你需要扩建房子的时候,譬如增加新的房间、窗户和过道或者在卧室增加一个壁炉,由于屋梁的限制,你并没有什么其他的选择。虽然较少的屋梁和架构会让你有更多的选择,但是当台风来袭或者发生地震的时候,你让家人住在这样一间只有屋顶的房子里,恐怕不会觉得安全吧。总之,框架是在结构和创造力之间的一个精确的天平。

由于框架要求更多的结构,你的创造力所拥有的发挥空间开始收缩了。一种极端是框架消失了,一片混乱;而另一种极端就是框架留给你的选择是如此之少,以至于你无法完成你的应用程序。很明显,一种完美的中间状态存在于这两个极端之间的某一处,而这种中间状态就是WebWork和所有其他MVC框架所梦寐以求的。

1.WebWork鼓励创造

Struts是一种流行的Java Web框架,它和WebWork有很多相似之处。但是,在构建大规模Web应用程序的时候,它并不能提供通常所需的创造力发挥的空间。例如,两个框架都会使用标签来显示一条国际化的文本。在这两种框架中,国际化的文本都可以使用诸如price、number和date这样的动态值作为它的参数。

假设我们希望以下面的格式来显示飞机票的确认通知:

Your {0} ticket(s) for flight {1} have been booked.
The total cost is {2}. Your confirmation number is {3}.
Your flight leaves at {4} and arrives at {5}

在Struts中,<bean:message>标签是用来显示动态值的。但可惜的是,Struts只允许一条消息中包含5个动态值,也就是以上这段文本必须被分为两部分:

<bean:message key="confirmation.msg1" 
arg0="count" arg1="flightNumber" arg2="cost"/>
<bean:message key="confirmation.msg2"
arg0="confirmation" arg1="departure" arg2="arrival"/>

在WebWork中,我们使用<ww:text>标签。尽管用法类似,但WebWork并没有限制一条消息所包含参数的个数,而是允许使用任意多的参数:

<ww:text name="confirmation.msg">
<ww:param value="count"/>
<ww:param value="flightNumber"/>
<ww:param value="cost"/>
<ww:param value="confirmation"/>
<ww:param value="departure"/>
<ww:param value="arrival"/>
</ww:text>

这看起来似乎是一个非常微不足道的差别——确实微不足道,但是,这说明了框架应该提供尽可能多的选择,同时又不至于让我们陷入无框架的混乱状态。一个好的框架提供了具体的特性来限制开发者能够做什么,但同时很细致地提供尽可能多的选择。因为任何有经验的开发者都能证明,一些大型的软件开发之所以能够实现开发目标,就是因为做了很多很小却十分聪明的选择,而框架应该能够为你实现其中的大部分选择。

2.WebWork找到了一种平衡

根据几年构建Web应用程序的经验,本书的作者已经发现WebWork确实提供了两者最好的折中。但是其他框架也是值得去了解的,哪怕你不去用它,都应该从中汲取所需的知识。

如果你想研究其他框架,我们向你推荐最为有趣的JSF和Tapestry。你可以从《Tapestry in Action》中获得更多的信息。《Tapestry in Action》,Howard Lewis-Ship著(Manning Publications,2004年,www.manning.com/catalog/ view.php?book=lewisship)。

【责任编辑:火凤凰 TEL:(010)68476606-8007】

回书目   上一节   下一节
深入Vista应用程序开发
Ruby on Rails 社区网站开发
ASP.NET从入门到精通
Java完全自学宝典
JavaScript完全自学宝典
 
 验证码: (点击刷新验证码)   匿名发表
  • Visual C++ 完全自学宝典

  • 作者:强锋科技,朱洪波
  • Visual C++ 6.0是微软公司为程序人员提供的Visual Studio 6.0工具套件中的重要组成部分。本书由浅入深地介绍使用Visual C++ 6.0..
Copyright©2005-2008 51CTO.COM 版权所有