现代Java Web开发架构分析
来源:网络 更新时间:2014-12-3
当主流计算机应用软件开始迁移到客户/服务器体系结构时,程序员们开始寻找方法以简化使用类似技术并且在结构也类似的工程的开发。这就为现代软件开发框架打好了基础。
随着基于万维网的应用程序服务器的发展及其相关的应用软件的膨胀,支持这些技术的开发框架也随着蓬勃发展。当前,在企业开发领域中出现了许多特别适合于JavaJ2EE平台的软件开发框架。
在本文中,我将集中讨论现代的Java开发框架,分析它们的特征和各自的使用优点。另外,我还想比较目前流行的生产质量框架,例如Struts,Spring和Hibernate,并详细讨论其基本相似性及有关基本概念。
我将简短分析被用于支持这些框架的企业开发环境或工具箱,例如BorlandJBuilder,Eclipse以及BEAWorkbench。请记住,市场上有许多有关这些开发框架的图书;然而,在任何一篇文章中,要对它们进行深入描述是不可能的。不过,我将尽力讨论最广泛地使用的概念。
1.共同点
几乎所有现代的网络开发框架都遵循了模型-视图-控制(MVC)设计模式--商业逻辑和描述被分开,由一个逻辑流控制器来协调来自客户端的请求和服务器上将采取的行动。这条途径成为了网络开发的事实上的标准。每个框架的内在的机制当然是不同的,但是开发者们使用来设计和实现他们的Web应用软件的API是很类似的。差别还存在于每个框架提供的扩展方面,例如标签库,JavaServerFaces或JavaBean包装器等。
所有的框架使用不同的技术来协调在Web应用程序之内的导航,例如XML配制文件,java属性文件或定制属性。所有的框架在控制器模块实现的方法方面也存在明显的不同。例如,EJB可能实例化在每个请求中需要的类或使用Java反射动态地调用一个适当的行动(Action)类。另外,不同框架在各自引入的概念上也有所不同。例如,一个框架可能定义用户请求和反应(以及错误)场所,而另外一个框架可能仅仅定义一个完整的流--从一个请求到多个响答和随后的再请求……
各种Java框架在它们组织数据流的方法方面是很类似的。在请求发出后,在应用程序服务器上产生一些行动;而作为响应,一些可能包含对象集的数据总是被发送到JSP层。然后,从那些对象--可能是有setter和getter方法的简单类,javabeans,值对象,或者一些集合对象--中提取数据。现代的Java框架还想方设法简化开发者的开发任务,如通过使用简易的API,数据库连接池,甚至数据库调用包等提供自动化的追踪方式来实现。一些框架或者能够钩进(hookedinto)另外的J2EE技术中,例如JMS(Java消息服务)或JMX,或把这些技术集成到一起。服务器数据持续性和日志也有可能成为框架的一部分。
2.企业开发环境
一些框架在Web开发者社区和企业发展领域变得相当流行。随着这些框架的日渐成熟并开始发行稳定的版本,商业的IDE(集成发展环境)开始为这些框架提供支持并把他们纳入到自己的产品中。一些IDE甚至基于框架的概念开发出整个的产品,例如,BEAWebLogicWorkshop就是基于Struts框架建立起来的。
BorlandJbuilder为Struts提供了内建的支持,也支持JSF和JSTL。
Eclipse平台已成为一个很流行的开发工具,部分因为它是基于插件的,部分因为它对于Web框架的支持。现在,出现了众多的Eclipse插件,甚至完整的基于Eclipse的IDE。许多插件被设计适合于Struts框架开发,例如MyEclipse(www.myeclipse.org)或M7(www.m7.com)。
大多数IDE都具有图形化的流程和可视化对象(类代理)。例如,下面是一个JBuilder的行动(Action)设计器,用于规划Web应用程序的页面顺序。
WebLogicWorkshop引入Java页面流程技术,它扩展了Struts框架而提供了一个简化的开发模型并增加了另外一些特性。Workshop使用页面流(PageFlows),实现轻易地把用户接口与导航和商业逻辑分离开来。页面流由JSP页组成,这些页面包含用户接口元素和一个控制器文件(JPF)--它包含由用户提供的数据将怎样被处理的指令以及下一步什么页面将被返回到用户的信息。页面流动提供给开发者一个可视化的Web应用程序总体轮廓,它让开发者能够看到直观地分析不同的JSP页彼此相关联,并实现Web应用程序整体结构的快速建立。