网页层次的内部原理

这一章我们将讲述入对你的用应程序如何设计和利用网页层的物理和逻辑的方面。我们将讲述存在于各个建筑层的关系和在整个用应程序中各个部件所发挥的作用。将特别关注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服务的存取方式,但是私有的适配器仍然被使用。

这是本人的第一次翻译,有不对的地方请各位多多见谅。并把意见发送到我的邮箱:anywn_ldh@126.com

WEB 应用中的整体结构和层次关系相关推荐

  1. link中的rel表示relation(关系),表示了当前文档与 Web 集合中其他文档的关系

    <link>中的rel表示relation(关系),表示了当前文档与 Web 集合中其他文档的关系

  2. rest web服务_在WildFly的REST Web服务中与Jackson的双向关系

    rest web服务 这是使用Jackson的REST Web服务中Java实体之间的双向关系的示例. 假设我们在两个实体Parent和Child之间存在双向关系. 使用MySQL工作台为这两个表生成 ...

  3. 在WildFly的REST Web服务中与Jackson的双向关系

    这是使用Jackson的REST Web服务中Java实体之间的双向关系的示例. 假设我们在两个实体Parent和Child之间存在双向关系. 使用MySQL工作台为这两个表生成SQL模式文件. DR ...

  4. 在web开发中的三个层次使用事务

    很多数据库操作需要进行事务,Asp.net下面进行事务大致有3个层次:  (1)存储过程层次的事务  (2)Ado.Net层次的事务  (3)Asp.Net页面层次的事务  下面分别举例:  首先建立 ...

  5. html5中的dom中的各种节点的层次关系是怎样的

    html5中的dom中的各种节点的层次关系是怎样的 一.总结 一句话总结:Node节点是所有节点的基类,所以都继承它的方法 1.dom提供在js中动态修改html标签的作用 比如增加修改标签等,并且是 ...

  6. Web开发中的用户角色权限设计总结

    在Web开发中关于权限管理设计大抵涉及到两个方面:一:功能方面权限设计:二:资源方面权限设计.二者比较来看,功能方面权限的可重用性更高. 1.关于权限: 按照角色权限的最简单的设计 名称 描述 用户 ...

  7. Web Service和SOAP以及HTTP的关系?

    Web Service.WSDL.SOAP.HTTP的概念存在诸多联系,在不同的产品中体现的概念也不一样.本文旨在描述一下其联系 和区别. WebService 和 WSDL的关系? Web Serv ...

  8. ava web 开发过程中常见的一些错误

    现在通常人们讨论和实现Java WEB应用时,往往过度关注框架和平台,对常见实现的各种模式未有深入的考虑.自从在IBM DevelopWork上见到一个名词"错误模式",就一直仔细 ...

  9. 【Azure】微软 Azure 基础解析(五)核心体系结构之管理组、订阅、资源和资源组以及层次关系

    本系列博文还在更新中,收录在专栏:「Azure探秘:构建云计算世界」 专栏中. 本系列文章列表如下: [Azure]微软 Azure 基础解析(三)描述云计算运营中的 CapEx 与 OpEx,如何区 ...

最新文章

  1. 快速部署-01-docker
  2. Ubuntu 建立tftp服务器
  3. java游戏重新开始_问题1:java问题--某局小游戏结束后怎么重新开始?
  4. ss加密php,js前端加密,php后端解密(crypto-js,openssl_decrypt)
  5. mac npm全局安装权限不足问题解决
  6. 最小环(【CCF】NOI Online能力测试 提高组第三题)
  7. 利用matlab的帮助功能分别查询inv,MATLAB实验报告第一章..doc
  8. 如何用python爬取公众号文章搜狗微信搜索_python如何爬取搜狗微信公众号文章永久链接的思路解析...
  9. 安装VisualSVN Server时候,端口号冲突
  10. C# 缓存学习第一天
  11. TEA(Tiny Encryption Algorithm)
  12. XML注释与取消注释快捷键
  13. hive分区表加载数据
  14. 计算机修复开机按什么,电脑蓝屏修复按哪个健?
  15. 在TMS320F28XXX DSP上实现从flash拷贝整个程序到ram运行的方法探讨
  16. ip类「ABCDE五类」区分和私有ip地址的知识
  17. C#_根据银行卡卡号判断银行名称
  18. 论文笔记1 MOEFL Multi-objective Evolutionary Federated Learning
  19. Open the World 丨 COSCon'22志愿者招募正式启动
  20. 最佳阵容问题matlab,数学建模-最佳阵容问题.doc

热门文章

  1. TensorRT/samples/common/argsParser.h源碼研讀
  2. 3D打印喷嘴大小如何选择0.2-0.5mm喷嘴
  3. MonkeyEye电影售票系统--活动图
  4. 京东要如何解决1号店人员问题?网易考拉:我来帮你
  5. ThinkPHP 入门
  6. 始祖双碳新闻 | 2022年8月12日碳中和行业早知道
  7. Kali Linux 2016.1 x86 x64 安装 wine QQ
  8. 技术类电子书网站-影印文字版(https://itbook.download/)
  9. 数字验证识别python_Python机器学习!识别图中最难的数字!验证码?验证码是小儿科!-站长资讯中心...
  10. 支付宝开通海外退税 阿里腾讯暗战跨境O2O_21世纪网