六讲应用服务器PPT课件.ppt_第1页
六讲应用服务器PPT课件.ppt_第2页
六讲应用服务器PPT课件.ppt_第3页
六讲应用服务器PPT课件.ppt_第4页
六讲应用服务器PPT课件.ppt_第5页
已阅读5页,还剩78页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第六讲应用服务器 内容 一 动因二 三层架构三 Web服务器四 业务构件容器五 基于应用服务器的软件开发 一 动因 两层架构典型的问题 客户端程序的分发 升级开销较大浏览器的优势 客户端不需要专门的程序只要有浏览器就可以访问服务器上的资源资源 文件 数据 服务 导致了三层架构的广泛采用应用服务器对三层架构提供了有力的支持 随着网络软件的应用面越来越广服务器端软件变得越来越重要从早期的FTP服务器 WWW服务器 邮件服务器逐步向更广泛的应用领域发展迫切需要有新型的高层开发平台给予支持提高开发效率与应用的质量多数网络环境中的高层开发平台逐步将自己定位为一种应用服务器其中 遵循J2EE规范的应用服务器影响最大 二 三层架构 操作系统 应用服务器 应用程序 浏 览 器 数据库 用户界面层 业务逻辑层 数据访问层 用户界面层负责接受用户的输入 向用户输出结果或者提示信息不负责进行具体的处理过程可能会在用户输入后进行合法性验证业务逻辑层是三层架构的核心层是连接用户界面层与数据访问层的纽带根据用户的请求生成检索语句或更新数据库并把结果返回给用户界面层数据访问层负责实际的数据存储和检索过程 三层架构的优点 不必为了业务逻辑上的微小变化而迁至整个程序的修改只需要修改商业逻辑层中的一个函数或一个过程增强了代码的可重用性便于不同层次的开发人员之间的合作只要遵循一定的接口标准就可以进行并行开发对于三层架构的应用系统前面两章讲到的两层架构技术几乎都要用到也有人在此基础上提出4层架构 N层架构 三层架构与两层架构比较1 两层架构优点 由于客户端与服务器的直接相连 因此响应速度快操作界面漂亮 形式多样缺点 需要专门的客户端安装程序配置 维护开销大 2 三层架构优点 客户接入简单不需要在本地安装软件 只需要浏览器业务扩展简单方便通过增加网页即可增加服务器功能维护简单方便只需要改变网页 即可实现所有用户的同步更新缺点 界面灵活性降低页面动态刷新 响应速度明显降低 J2EE平台对三层架构的支持1 基本支持架构 操作系统 JSP POJO 应用服务器 应用程序 浏 览 器 数据库 Web 容器 Web 服务器 构件 容器 EJB POJO 容器 数据访问层 POJO 用户界面层 业务逻辑 层 Servlet EJB 2 SSH支持 操作系统 应用服务器 应用程序 浏 览 器 数据库 用户界面层 业务逻辑层 数据访问层 S tructs S pring H ibernate Web服务器 应用服务器 数据服务器 由于客户 服务器模式在网络环境下的应用十分普遍 因此现在出现了越来越多的服务器一般人们理解的服务器是一种高性能计算机 作为网络的节点 存储 处理网络上80 的数据 信息而个人电脑 笔记本 PDA 手机等固定或移动的网络终端可以从服务器获取信息 或者通过服务器进行交互服务器的构成与微机基本相似但在处理能力 稳定性 可靠性 安全性 可扩展性 可管理性等方面存在差异很大 硬件服务器上加载了相应的服务器端软件后就构成了上述各类服务器 Web服务器专门处理HTTP请求 request Web服务器可以单独使用 为简单系统提供支持应用服务器以为应用程序提供商业逻辑支持为主目前的大多数应用服务器包含一个内置的Web服务器也可以将Web服务器独立配置 和应用程序服务器一前一后这种功能的分离有助于提高性能 给最佳产品的选取留有余地数据服务器是安装了数据库管理系统的服务器 三 Web服务器 1 概述2 HTTP3 HTML4 动态页面 Web服务器主要处理遵循HTTP的请求消息当接收到一个HTTP请求消息时会返回一个HTTP响应消息例如送回一个HTML页面为了处理一个请求可以响应一个静态页面或图片或者进行页面跳转或者把动态响应的产生委托给一些其它的程序CGI脚本JSP JavaServerPages servlets ASP ActiveServerPages 1 概述 Web 服务器 Web 浏览器 1 向 Web 服务器发出 Web 请求 2 查找页面 3 向 Web 浏览器发送页面内容 其特征包括 1 应用层使用HTTP协议协议 2 HTML文档格式描述语言 3 浏览器统一资源定位器 URL 查找方式 HTTP的主要处理步骤 连接 请求 应答 关闭连接Web浏览器与Web服务器建立连接打开一个称为socket 套接字 的虚拟文件 2 请求Web浏览器通过socket向Web服务器提交请求HTTP的请求一般是GET或POST命令GET命令的格式为 GET路径 文件名HTTP 1 0文件名指出所访问的文件HTTP 1 0指出Web浏览器使用的HTTP版本POST用于FORM参数的传递 2 HTTP 3 应答请求消息通过HTTP协议传送给Web服务器Web服务器接到后 进行事务处理处理结果又通过HTTP传回给Web浏览器从而在Web浏览器上显示出所请求的页面 4 关闭连接当应答结束后 Web浏览器与Web服务器必须断开以保证其它Web浏览器能够与Web服务器建立连接 GET simple htmHTTP 1 1Accept image gif image x xbitmap image jpeg image pjpeg application x shockwave flash application vnd ms excel application vnd ms powerpoint application msword Accept Language zh cnAccept Encoding gzip deflateUser Agent Mozilla 4 0 compatible MSIE6 0 WindowsNT5 1 SV1 NETCLR1 1 4322 NETCLR2 0 50727 Host localhost 8080Connection Keep Alive 一个例子 helloworld 请求消息 HTTP 1 1200OKServer Microsoft IIS 5 1X Powered By ASP NETDate Fri 03Mar200606 34 03GMTContent Type text htmlAccept Ranges bytesLast Modified Fri 03Mar200606 33 18GMTETag 5ca4f75b8c3ec61 9ee Content Length 37helloworld 应答消息 200就表示操作成功404表示对象未找到500表示服务器错误403表示不能浏览目录 3 HTML HTML HypertextMarkupLanguage 即超文本标记语言是用来制作网页的标记语言是一种标记语言 不需要编译 直接由浏览器执行是一个文本文件 包含了一些HTML元素 标签等文件必须使用html或htm为文件名后缀是大小写不敏感的 HTML与html是一样的 高级软件工程2009软件构件与中间件课程设置目标 如何提高软件的开发效率与产品质量 特别是 讲义下载 随着讲课进度的推进而不断更新 第0讲 课程介绍 2 20 第1讲 网络软件 2 20 第2讲 中间件概述 2 27 3 06 第3讲 软件交互基础 3 13 第4讲 远程过程调用 3 20 第5讲 对象请求代理 3 27 第6讲 应用服务器 1 4 03 第7讲 应用服务器 2 4 10 第8讲 支持Web服务的中间件 4 17 4 动态页面 静态页面是不能根据外部信息自动更新内容的页面静态页面不是网站上没有动画静态页面一般是html或htm文件如果想更新网页内容就要通过FTP软件把文件DOWN下来用网页制作软件修改动态页面可以通过外部系统对页面的内容进行更新有数据库 页面里只是写代码 内容保存在数据库里更新方便 易操作动态页面也可以在发布时生成htm后缀的文件动态网站常用开发语言有 CGI PHP ASP JSP CGI CommonGatewayInterface 公用网关接口页面通过CGI调用在WEB服务器的计算机上运行的程序再将其运行结果通过WEB服务器传输到客户端的浏览器上CGI建立WEB页面与脚本程序之间的联系可以利用脚本程序来处理访问者输入的信息并据此作出响应这样的编制方式比较困难而且效率低下每一次修改程序都必须重新将CGI程序编译成可执行文件最常用于编写CGI技术的语言是Perl PracticalExtractionandReportLanguage 文字分析报告语言 它具有强大的字符串处理能力特别适合用于分割处理客户端Form提交的数据串 1 CGI PHP HypertextPreprocessor 超文本预处理器一种易于学习和使用的服务器端脚本语言是嵌入HTML文件的一种脚本语言 语法大部分是从C JAVA PERL语言中借来它是当今INTERNET上流行的脚本语言只需要很少的编程知识就能使用PHP建立一个真正交互的WEB站点可以结合HTML语言共同使用与HTML语言具有非常好的兼容性使用者可以直接在脚本代码中加入HTML标签在HTML标签中加入脚本代码从而更好的实现页面控制提供更加丰富的功能 2 PHP ASP ActiveServerPages 微软开发的一种类HTML Script与CGI的结合体没有提供自己专门的编程语言允许用户使用包括VBSCRIPT JAVASCRIPT等在内的许多已有的脚本语言编写ASP的应用程序ASP的程序编制比HTML更方便且更有灵活性在WEB服务器端运行 运行后再将运行结果以HTML格式传送至客户端的浏览器 3 ASP JSP JavaSeverPages 和ASP在技术方面有许多相似之处都是为实现动态交互网页制作提供的技术环境支持都能够为程序开发人员提供实现应用程序的编制及将网页与构件从逻辑上分离的技术都能够替代CGI 使网站建设与发展变的较为简单与快捷不过两者对实现基础要求不相同ASP一般只应用于WindowsNT 2000平台JSP则可以不加修改地在85 以上的WebServer上运行其中包括了NT的系统基于JSP技术的应用程序比基于ASP的应用程序易于维护和管理 4 JSP 在一个JSP文件第一次被请求时JSP引擎把该JSP文件转换成为一个servlet客户访问这个页面的时候如果该文件没有发生过更改JSP引擎就直接调用已经装载的Servlet如果已经做过修改的话那就会再次执行以上过程 翻译 编译并装载在JSP技术中 JavaBean实现了业务逻辑部分它把数据返回给JSP页面由JSP页面负责格式化数据并输出到客户端的浏览器Sun的EnterpriseBluePrints提供了大量指导原则 设计模式和很好的例子 网上宠物店 JavaPetStore JSP与Servlet 5 AJAX 传统的Web应用允许用户端填写表单 form 当送出表单时就向Web服务器发送一个请求服务器接收并处理传来的表单然后送回一个新的网页这个做法浪费了许多带宽 在前后两个页面中的大部分HTML码往往是相同的由于每次都需要向服务器发送请求应用的响应时间就依赖于服务器的响应时间这导致了用户界面的响应比本机应用慢得多 AJAX AsynchronousJavaScriptandXML 应用可以仅向服务器发送并取回必需的数据它使用SOAP或其它一些基于XML的页面服务接口并在客户端采用JavaScript处理来自服务器的响应因为在服务器和浏览器之间交换的数据大量减少大约只有原来的5 结果我们就能看到响应 服务器响应 更快的应用 結果 同时很多的处理工作可以在发出请求的客户端机器上完成所以Web服务器的处理时间也减少了 Ajax的优点 能在不更新整个页面的前提下维护数据使Web应用程序更为迅捷地回应用户动作并避免了在网络上发送那些没有改变过的信息Ajax不需要任何浏览器插件但需要用户允许JavaScript在浏览器上执行 缺点 可能破坏浏览器后退按钮的正常行为 在动态更新页面的情况下用户无法回到前一个页面状态这是因为浏览器仅能记下历史记录中的静态页面一个被完整读入的页面与一个已经被动态修改过的页面之间的差别非常微妙 用户通常都希望单击后退按钮 就能够取消他们的前一次操作 但是在Ajax应用程序中 却无法这样做 开发者已想出了种种办法来解决这个问题当中大多数都是在用户单击后退按钮访问历史记录时通过建立或使用一个隐藏的IFRAME来重现页面上的变更例如 当用户在GoogleMaps中单击后退时 它在一个隐藏的IFRAME中进行搜索 然后将搜索结果反映到Ajax元素上 以便将应用程序状态恢复到当时的状态 一个相关的观点认为 使用动态页面更新使得用户难于将某个特定的状态保存到收藏夹中 该问题的解决方案也已出现 大部分都使用URL片断标识符 通常被称为锚点 即URL中 后面的部分 来保持跟踪 允许用户回到指定的某个应用程序状态 许多浏览器允许JavaScript动态更新锚点 这使得Ajax应用程序能够在更新显示内容的同时更新锚点 这些解决方案也同时解决了许多关于不支持后退按钮的争论 四 业务构件容器 1 软件构件2 EJB3 EJB构件容器4 消息截取器 1 软件构件 从一般意义上讲构件是系统中可以明确辨识的构成成分软件构件则是软件系统中具有一定意义的相对独立的构成成分目前讨论的软件构件主要着眼于其易复用 易维护意义 代码 程序 目标码态 源代码态 运行态 存储态 文档 编译 加载 软件 程序 文档 静态 定义1 Szyperski1996 一个构件是一个组装单元它具有约定式规范的接口以及明确的依赖环境构件可以被独立地部署 由第三方组装 定义2 SEI2001 构件是一个不透明的功能实现体能够被第三方所组装 且符合一个构件模型 定义3 构件是可以被复用的软件实体 由构件规约与构件实现两部分组成复用可以发生在不同应用领域的软件系统之间可以发生在相同领域内的不同系统之间 可以发生在一个系统在演化过程中的不同阶段之间 构件规约 specification 构件规约用于描述如何对构件进行使用与管理是对构件外部特征的形式化描述是关于构件的知识 构件规约 构件接口 客户合约 构件信息 组装合约 构件的运行管理规约 运行合约 构件的使用规约 构件实现 Implementation 构件实现是构件内部的代码实现体对于一个面向过程的系统一个构件由系统的一个或多个紧耦合的模块组成对于一个面向对象的软件系统一个构件由系统的一个或多个紧耦合的对象组成 a b c 构件 构件实现 构件规约 构件实现 构件规约 1 构件规约 2 构件实现 1 构件规约 构件规约 构件实现 2 构件的规约与实现 EJB EnterpriseJavaBean是服务器端的软件构件规范是面向分布式 事务处理的企业级应用系统的构件而在此之前的JavaBean重点在于允许开发者在开发工具中可视化地操纵构件EJB保持了Java 一次编写 随处可用 的特点 2 EJB 2019 12 27 42 构件包含对企业数据进行操作的业务逻辑构件实例由容器在运行时创建并管理构件在部署时可以通过编辑其环境入口而定制各种服务信息 事务 安全等属性 被从构件类中剥离出来并使得服务信息可以在系统组装或者部署时管理 客户对构件的访问通过容器间接进行如果构件仅使用EJB规范定义的服务它可以被部署在任意容器中构件可以在不修改源代码 不重新编译的前提下加入到一个应用系统中构件提供者定义构件的客户视图 EJB是相对粗粒度的业务对象例如定单 雇员记录等细粒度的对象例如定单行 雇员地址等不适于模型化为构件 EJB的粒度 EnterpriseBeaninstance Container EJBServer Client Deploymentdescriptor componentcontract client view EJB边界 Container EJBServer Client EJBHome EJB EJBObject Transaction Security JDBC JMS 构件客户 系统组装者 构件容器 EJB 构件实现 系统部署者 提供给系统开发者的信息 EJB构件的规约 1 最基本的EJB实现与客户程序 EJB构件实现 客户程序 接口 实现体 部署描述 1 EJB构件接口 构件提供者为便于复用者 客户 复用该构件所提供的必要的信息 特别是接口信息 构件与容器协作实现这些接口 构件的接口主要包括实例接口与类型接口EJB HomeInterfaceComponentInterface RemoteInterface 这两类接口的划分与客户向服务器发出的请求密切相关一种请求特定于具体构件实例与这种请求对应的接口简称为实例接口一种请求不特定于具体构件实例与这种请求对应的接口简称为类型接口 EJB接口例子 importjava io Serializable importjava rmi RemoteException importjavax ejb CreateException importjavax ejb EJBHome publicinterfaceConverterHomeextendsEJBHome Convertercreate throwsRemoteException CreateException HomeInterface importjavax ejb EJBObject importjava rmi RemoteException publicinterfaceConverterextendsEJBObject publicdoubledollarToYen doubledollars throwsRemoteException publicdoubleyenToEuro doubleyen throwsRemoteException RemoteInterface importjavax ejb SessionBean importjavax ejb SessionContext publicclassConverterEJBimplementsSessionBean publicdoubledollarToYen doubledollars returndollars 121 6000 publicdoubleyenToEuro doubleyen returnyen 0 0077 publicConverterEJB publicvoidejbCreate publicvoidejbRemove publicvoidejbActivate publicvoidejbPassivate publicvoidsetSessionContext SessionContextsc 2 EJB构件实现类 Server EJBModule1Converterorg ejb sessionbean ConverterHomeorg ejb sessionbean Converterorg ejb sessionbean ConverterBeanStatelessContainer 3 EJB构件部署描述符 Jar 文件 描述 JavaHomeInterface JavaRemoteInterface Java实现类 构件封装体 importjavax naming Context importjavax naming InitialContext importjavax rmi PortableRemoteObject importConverter importConverterHome publicclassConverterClient publicstaticvoidmain String args try Contextic newInitialContext Objectobjref ic lookup MyConverter ConverterHomehome ConverterHome PortableRemoteObject narrow objref ConverterHome class ConvertercurrencyConverter home create doubleamount currencyConverter dollarToYen 100 00 System out println String valueOf amount amount currencyConverter yenToEuro 100 00 System out println String valueOf amount currencyConverter remove catch Exceptionex System err println Caughtanunexpectedexception ex printStackTrace Client 2 EJB构件分类 为什么需要区分不同类别的构件 完成功能不同共享方式不同管理方式不同不同厂商实现侧重点不同 Jacobson 系统与演员 用户或者外部系统 之间的交互 长期存在的持久信息 协作 时序 事务和对其他对象的控制 可用于封装与特定用例有关的控制 分析类可以被划分为三类 boundary control entity 分析模型 出钱口 柜员界面 取钱 帐户 进钱口 转帐 存钱 取钱 用例模型 存钱 转帐 EJB构件分类 会话构件 SessionBean 有态会话构件无态会话构件实体构件 EntityBean BMP实体构件CMP实体构件消息驱动构件 Message DrivenBean 特征 与单个客户相对应不直接表示数据库中的共享数据尽管可以访问 更新共享数据生命周期相对较短当EJB容器崩溃时 也随着消失类别 Stateful 有态 Stateless 无态 会话构件 有态构件 一个会话通常是有状态的因为一个会话过程通常涉及多个 多次 方法的调用它们之间存在数据上的关联因此 需要为每个独立的客户保持其状态例如 网上购物过程中 该过程可能跨越数分钟 数小时 甚至数天 通常进行多次向购物车增加商品的操作这就需要在购物过程中一致保持用户的状态 无态构件 部分会话过程可以无状态它仅涉及简单的操作此时 不必为客户保留状态信息例如 一个购物过程结束时 计算合计的过程 Stateful Stateless 过程需要保持状态 加入过程中断 恢复运行时需要以前的信息吗 特征 持久性构件管理的持久性 Bean ManagedPersistence 容器管理的持久性 Container ManagedPersistence 可以同时为多个客户服务 生命周期较长 与数据库中的数据相同 当EJB容器崩溃时 可以被恢复 类别 BMPCMP 实体构件 BMP构件 Bean ManagedPersistenceEntityBean CMP构件 Container ManagedPersistenceEntityBean 构件自己 构件提供者 处理持久性问题例如 将状态存储到外存从外存读取状态查找构件等等 构件容器负责处理构件的持久性问题进一步减轻构件开发者的工作实现过程复杂 EJBServer Container Client Entitybean sessionbean 消息驱动的构件 Message DrivenBean 特征 为单个客户发出的消息服务 不直接表示数据库中的共享数据尽管可以访问 更新共享数据 生命周期相对较短当EJB容器崩溃时 也随着消失无状态 在编程语言中每个数据对象都是数据值的容器COM套间通过线程模型将不同的对象分割到不同的运行空间中使得它们的运行相对独立MTS引入了事务性上下文概念共享相同事务域的多个对象处于同一个线程中这同样将它们与系统的其他部分隔离开来在 NET的CLR中同时吸取了COM与MTS中的上述技术跨越上下文的访问被执行引擎所控制并可能进行一些特殊处理EJB模型中的容器概念比较完善除了采用类加载器分别加载不同的构件外EJB容器还为EJB构件实例承担了记录上下文 控制生命周期 控制对实例的访问等任务 3 EJB构件容器 构件容器的功能 网络环境中的软件必须考虑客户访问量问题一个拥有大量用户的系统可能需要同时运行成千上万的对象如果不控制系统资源的使用将使系统因为资源不足而大大降低响应时间甚至导致系统不可用应用服务器通过容器对大量构件实例的有效管理来提高系统的资源利用率所依赖的主要机制为 实例池冻化 活化生命周期管理等 1 实例池 实例池技术是系统软件中普遍使用的共享技术其核心思想是将暂时不用的资源实例缓存起来放到实例池中当下一个客户需要访问资源时直接从实例池中取出来为客户服务实例池技术带来的好处主要有两方面 其一 有效地减少对实例频繁的创建与删除工作提高了响应速度其二 通过设定实例池的大小可以限制访问客户的数目以保证正在访问客户的服务质量实现构件实例池的基本方法是 在加载系统时 为一个构件类型创建多个实例 当一个客户提出请求时 从实例池中提取构件实例建立起与客户的关联当客户不再需要构件服务时 将实例放回实例池 2 冻化 活化 有态构件不同于无态构件的地方在于 有态构件保持一个业务过程中前后方法调用之间的状态这个状态代表着有态构件实例与其客户之间的一个对话对有态构件实例进行有效资源管理的技术是冻化 活化技术当一个构件实例的访问频率较低而此时又有大量客户需要服务时可以将这个有态构件实例挂起以减少系统中构件实例的数目挂起有态构件的实例需要保持其话态 实例的状态将被序列化序列化构件实例时除了需要将该实例从内存中暂时删除外还需要将该实例的状态保存到外存中 例如一个文件系统等 当这个实例的客户再次访问该实例时容器将首先构造一个新实例然后从外存中取出实例的状态并恢复实例的状态冻化 活化技术也适用于实体构件 3 生命周期管理 构件的实现体一般随着应用系统的部署被加载到应用服务器中被构件容器所管理例如 创建构件实例查找构件实例删除构件实例接收客户请求消息等构件的生命周期管理主要是指构件实例的生命周期管理 构件提供者在构件类中实现业务逻辑客户请求通过构件容器代理向具体构件类发送对于mes

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论