网页层次的内部原理
这一章我们将讲述入对你的用应程序如何设计和利用网页层的物理和逻辑的方面。我们将讲述存在于各个建筑层的关系和在整个用应程序中各个部件所发挥的作用。将特别关注web层,它允许应用程序和客户端通过网页的形式进行交流和相互操作。
Struts Framework是基于java servlet和Java server page 技术的,并在此基础上进行扩展,因此它在web容器中是独立的。对于struts开发者来讲,理解web容器如何处理客户端请求是深刻理解框架本身的基础。这一章将阐述web容器的各种各样的组件并详细说明他们各自得职能。
体系结构得预览
这个部分我们将从较高的层次看看struts应用结构。尽管这个部分展示了企业应用结构,但是并不是所有用struts写得应用都会是这样得规模和这样得构成。但是这种类型的应用程序可以让我们理解如何很多配置struts应用程序。
许多应用程序,特别是j2ee应用程序,可以分层来描述。应用程序的功能被分成很多对立的层,或者说是功能层,这样可以实现职责分离,重用性好,更强得扩展性,和许多其他得利益。这种分离可能是物理方面的分离,也就是说分布在独立的硬件资源上,或者是纯粹的逻辑功能得分离。这种情况下,就是一层或多层配置在同一的硬件资源上,但是这种分离的形式是以软件的形式给出的。下图展示了一种典型的struts应用程序的层次。
并不是每个struts应用程序都包含在上图中所展示所有的层。对许多较小的应用,中间层主要是有web容器组成的,然后由它和在企业信息系统(EIS)层中的数据库直接进行交互。
注:什么是容器?
有多种多样的容器。EJB容器,web容器,servlet容器等等。总之。容器就是提供给软件组件运行的环境,不需要组件开发人员的担心。Web容器允许servlet,jsp组件和其他的java类配置在其中并执行。像JNDI,连接池和事务这些服务,都可以在容器的级别上进行配置,组件开发人员根本不需要担心这些资源的管理;这类似于EJB容器管理安全事务和实体池。(bean pooling).
当我们用容器提供的服务时,组件开发人员可能必须放弃对于容器环境的控制,对重要服务的处理都不需要开发人员去担心编译过程。第三方提供者必须遵循明白公布出来的公共规则来构建容器。尽管第三方提供商可以以自我的方式实现容器的一部分,但是他们必须遵循这个规则,从而保证开发人员能够便捷地进行开发。
客户层
客户层提供了供用户和应用进行交互的一种方法。这种交互可以通过浏览器的方式,也可能是通过编程实现网络服务接口的方式。不论是哪种类型的客户,这种交互包括执行一个请求和从中间层接收一些反映。
就struts框架应用来说,最长见的客户类型是web浏览器。但是,也有可能有像无线设备和java Applet这种类型的客户。
网页层
图2-1展示了中间层是WEB层和一些应用服务组件集成而成的。在图2-1中,是一个EJB容器。这两层经常是组合在一起的,很多应用服务都包含WEB层功能。
Web层提供了让客户端和寄居在其他层的应用逻辑进行交互的能力。在很多一般的web应用中,一般不会让这一层一些或所有的用应逻辑。在更大型的企业应用中,web层作为一个翻译器,让HTTP请求映射到在中间层的其他的服务。
Web层也负责按照应用和用户状态处理屏幕流程。Web层也和数据库交互,或者在企业应用中,作为应用服务器。Web层是相当于把客户应用和核心的后台事务系统粘合在一起的粘合剂。
在web层的组件允许开发人员扩展web服务的功能。对于struts,它通过利用运行在servlet容器中的框架组件。
中间层
中间层通常被称为应用层或者是服务器。这部分是归因于在这一层经常有服务器的这一事实。并不是所有的应用都有应用层的。对于小的web应用更是如此。许多小的工程选择放弃利用大的应用服务器,而和数据库或者是其他的一些数据存储直接进行交互。当一个应用服务器存在的时候,web层利用RMI的一些变种和他们进行交互。对于EJB服务存在于这一层的时候,交流的协议就是在IIOP基础上的RMI.
注:RMI overIIOP
Remote Method Invocation(RMI)允许调用远程对象上的方法。RMI的java实现是著名的java远程方法调用协议(JRMP),它已经存在一定的时间,它是为了java对java远程交流而特别设计的。
对于java版的RMI有一个问题,就是JVM必须同时在客户端和服务端运行,它才能用。对于许多用其他语言(像c++)写的被称为遗产的应用,java需要和这些系统进行交互。这样,RMI over IIOP就出现了。
Intenet Interoperability Protocol(IIOP)是为了让分布式的组件通过TCP/IP进行相互交互而设计的。IIOP是语言和平台对立的。
因此,通过运用在IIOP 上的RMI,java才能够与用其他的语言写的应用在各种各样的平台上进行交互。RMI/IIOP 正如被所写的那样,需要EJB服务器的支持,因此存在于EJB和J2EE的规格说明中。
当包含应用层的时候,它能够提供更多的扩展性,容错能力和很高的可得到的架构。当然,它依赖于很多不同的因素。其中主要的一个目的是把表现的职能从模型和事务规则中分离出来。现代,很多web应用都是用EJB服务器作为应用层。他们可能没有用到J2EE架构的各个方面,如EJBs,但是有很多由于存在J2EE服务器而引起的其他的很多利益。
企业信息系统层(EIS)
企业信息系统层包括在整个企业中所用到的数据和服务。它提供了对企业资源,包括数据库,大型机,用户关系管理应用(CRM),资源计划系统。
中间层通过利用针对这种资源的协议和在企业信息系统中的组件进行交互。例如,中间层通常利用JDBC驱动来和关系数据库进行交互。对于企业资源计划系统,尽管一些系统和其他的资源开始支持更像web服务的存取方式,但是私有的适配器仍然被使用。
这是本人的第一次翻译,有不对的地方请各位多多见谅。并把意见发送到我的邮箱:[email protected]