框架通常定义了它们本身不能做什么,而另一方面,容器则在大多数情况下定义它们自己能够做什么。让我们来看一下绝大多数Web应用程序开发人员都十分熟悉的容器——Servlet容器。现在有许多不同的Servlet容器可供选择:Tomcat、Orian、Resin、WebLogic和WebSphere,等等。它们在很多方面都有区别:成本、性能和支持等。但是抛开商业的因素不谈,每一个容器都提供了它们所特有的增值特性。一些容器提供的集群计算要比其他的好;而另一些则为开发者提供更好的支持;一些支持Servlet 2.3的规范,而另一些则支持更新的Servlet 2.4的规范。关键是容器的设计是为了装入你的代码并且为代码提供特有的特性。
一个容器拥有越多有用的特性,则该容器越好。那么当我们说WebWork既是一个框架又是一个容器意味着什么呢?
1.WebWork的轻量级容器
Servlet容器提供了规范要求的特性,或者说提供了容器开发人员所实现的特性。其他J2EE容器,像EJB容器亦是如此。而轻量级容器则不同,它让你可以为一个基本的容器增加新的特性,使其符合你的应用程序的需求。
让我们来考虑一个更具体的例子。假设你不使用EJB,但你又希望为参与项目开发的程序员提供简单的事务支持,那么你可以将事务支持特性加入到轻量级容器中,使装入容器的项目随之受益。现在,你就拥有一个独一无二的提供EJB某些优势的容器了。当你开始专门为应用程序提供一些EJB和其他规范想都不敢想的特性时,这将变得越来越有趣。
WebWork除了是一个MVC框架之外,还是一个小巧的轻量级容器。它让你可以创建以上所提到的这些特性,让其他程序员从你所构建的独一无二的容器中获益,从而降低开发难度。在第6章“控制反转”中,我们将向你展示如何利用WebWork的容器为你的开发团队提供高度自定义的解决方案。
2.竞争对手
WebWork并不是唯一的轻量级容器,还有其他诸如Jakarta HiveMind(此前的Jakarta Avalon)、PicoContainer和Spring可供选择。虽然每个容器各有不同,但是它们都设法提供相同的东西:一个简单的可配置环境,在里面可以存在各种对象,并且对象间相互独立且易于管理。然而,这激动人心的轻量级容器只是在最近才得到认可。
说明:我们向您推荐《Spring in Action》(Craig Walls著),您可以从中获得更多有关Spring的知识。(Manning Publications,2005年,www.manning.com/ walls2)。
让我们暂时回到有关框架的讨论中来,你一定还记得在提供过多或者过少特性之间有一个非常微妙的平衡吧。虽然WebWork一并提供了它自己的轻量级容器,但是它仍然可以插入其他不同的容器。这意味WebWork的框架与PicoContainer一起使用是没有任何问题的。
从纯技术的角度来说,WebWork的容器并不是WebWork的核心部分,甚至被认为是一个可选的部分。由于不存在紧密的耦合,所以使用其他候选的容器来替换WebWork的容器并与WebWork框架部分集成是十分简单的,而且WebWork通过对interceptor(拦截器)的支持来实现这些集成方式。在第5章“使用interceptors增加功能”中,你将会了解到interceptor在保持框架不变的情况下,如何为你的应用程序提供强大的功能和极强的伸缩性。
如果你了解了WebWork的发展历程,你会更好地认识到WebWork的容器和框架之间的不同。让我们花一些时间来回顾一下WebWork的历史及围绕它形成的社区,这样你将了解到WebWork的核心部分——XWork源自哪里,什么时候增加了控制反转容器,以及增加的原因。
| 回书目 上一节 |
|
· SQL Server入门到精通.. · 交换技术配置手册技术.. · 超级网管员——网络应.. · 网络服务器配置与应用.. · Linux集群技术自测试题.. · JavaSript核心技术自测.. |
· ARP攻击与防范技术自测.. · 国庆挑战自己参加自测 .. · 《网管员必读—网络应.. · 历次技术自测 获奖网友.. · 51CTO国庆七天技术自测.. · 9.2.2 无线AP |
|
|||
| · 网管系统介绍 · 网络管理系统如何支撑I.. · CISSP认证成长之路 · 51CTO国庆充电专题之好.. · 网络技术经典基础教程 · 51CTO主编推荐经典专题 · RAID——磁盘阵列基础 · 充电计划之热门IT认证.. |
· 51CTO技术自测 挑战自.. · AMD Phenom三核处理器.. · 国际文档格式标准开战 · 2007年互联网大会 · 我是黑客我怕谁——讲.. · ARP攻击防范与解决方案 · Solaris 10 配置管理 · Solaris基础知识入门 |
||
|
|||
| · Java基础教程 · VPN技术 · ARP攻击防范与解决方案 · SQL Server 2005全解 · SOA 面向服务架构 · SQL Server 2005全解 · Java编程开发手册 · RAID——磁盘阵列基础 |
· 三层交换技术专题 · SQL Server入门到精通 · Windows Server 2003企.. · Windows远程桌面应用 · C#技术开发指南 · VPN技术 · C#技术开发指南 · Solaris 10 配置管理 |
||
|
|||
| · ARP攻击防范与解决方案 · VPN技术 · SQL Server 2005全解 · Java基础教程 · SQL Server入门到精通 · SQL Server 2005全解 · SOA 面向服务架构 · Java编程开发手册 |
· C#技术开发指南 · 三层交换技术专题 · C#技术开发指南 · Windows远程桌面应用 · RAID——磁盘阵列基础 · Windows Server 2003企.. · 邮件服务器专题 · wimax技术与趋势 |
||
| ·DB2 Viper快速入门 ·DB2 9数据库的镜像分割与.. |
·将XML应用程序从DB2 8.x.. ·DB2 9中的pureXML:如何.. |
| ·服务器中的“傻瓜机”在.. ·盖茨也喜欢登录Youtube看.. |
· · |
| ·体验Windows Server 2008.. ·将超星图书转成PDF文档 |
·使用 Office Communicati.. ·VMware Workstation 6.01.. |
| ·强烈质疑“步行1公里就能.. ·国庆期间新闻回顾:微软.. |
·9月第3周回顾:微软和英.. ·9月第2周回顾:四核之战.. |
| · 华为、贝恩资本22亿美元.. · NGN:下一代网络 · 网络访问中断大排查 |
· 教你使用Anti ARP Sniff.. · 网络嗅探教程:使用Snif.. · 常见病毒手工清除方法大.. |
| · C++是垃圾语言?! · 2007年IT界七大抄袭事件 · Java实用开发全集 |
· 解析Ajax开发框架 走进A.. · 基于Google Maps与Ajax.. · 基于Google Maps与Ajax.. |
| · 热门 IT 培训认证官方资.. · Ubuntu 中文开源频道 · Solaris基础知识入门 |
· Google推出唯一硬件——.. · 硬盘之父获得诺贝尔物理.. · 理性面对四核服务器选购 |
| · 甲骨文Oracle 11g正式发.. · Oracle数据库开发之PL/S.. · Oracle数据库开发基础教.. |
· 硬盘之父获得诺贝尔物理.. · 存储2006,一个并购的大.. · IDC宣布浪潮蝉联存储市.. |