




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
企业应用模型与JavaEE体系结构应用程序的开发模型传统应用程序模型三层分布式对象架构企业级应用问题及解决方案JavaEE架构及核心技术1应用程序的开发模型计算机应用程序的一般特点
大多数应用都由三部分组成:用户界面部分:表示层应用逻辑部分:业务逻辑层数据访问部分:数据访问层2应用程序的开发模型应用程序开发模型的变迁过程
单层两层三层N层12312312312343传统应用程序模型(一)数据访问、表示和业务逻辑在一个应用中代码复用、代码可维护性、代码的修改十分困难应用不是分布式的,不具有可伸缩性主机系统或单层结构:主机/终端模式4传统应用程序模型(二)用户界面和程序逻辑绑在一起,代码难以重用服务器的数据库必须同每一个活动的客户保持连接,消耗大量的运算资源,随着客户数目的增加性能不断下降,且存在死锁及崩溃的可能数据模型“紧耦合”在每一客户端,数据库结构改变将导致全体客户端改变,不利于更新和维护原始数据通过网络传递:加重网络负担客户端应用程序越来越大,对使用者的要求也越来越高客户/服务器结构:“胖”客户端胖客户端:表示逻辑业务逻辑业务数据模型通讯FatclientFatclient5三层分布式对象架构客户端:业务数据模型与UI分开,更“瘦”业务逻辑在中间层,成为“对象服务”。中间层可以处理多客户端,通过:连接池,多线程,对象一致性处理编程困难6关于分布式计算对象化的RPC(RemoteProcedureCall)对象之间的互操作性信息的传递在此方面的解决方案:CORBA(CommonObjectRequestBrokerArchitecture)RMI(RemoteMethodInvocation)DCOM(DistributedComponentObjectModel)7Web服务器与CGIWWW浏览方式所带来的:“Browser-based”客户端与“Internetworking”计算方式向服务器端的集中转化互联网CGIApplication8N层计算模式的引入从1层到N层,得到的改进:每一层可以被单独改变,而无需其它层的改变降低了部署与维护的开销资源(如连接)可以被缓冲和重复利用提高了灵活性、可伸缩性,并使性能提高成为可能瘦客户端的引入使Internet接入方便,而计算被集中至服务器端仍然存在的问题:对企业级应用开发人员的要求太高:熟悉分布式协议,进行一致性事务处理,负载平衡,安全……9构件(component)与中间层开发两个转变:计算模式上:网络计算(NetworkComputing)生产模式上:基于构件的开发(Component-basedDev)二者的结合:服务器端中间层构件的开发10构件的优点与特点一个软件构件是一个组合的单位,它包括合同化声明的接口及明确说明的上下文相关性。一个软件构件可以被独立部署且服务于第三方所做的组合。
构件的特点:构件是编译码构件是一个独立部署的单位构件是一个由第三方进行组合的单位构件没有持久的状态构件的优点:可插入更好的设计更好的复用方便的更新实现与接口分离11企业级应用开发问题分布式可移植面向Web体系可装配满足企业计算要求一致性事务性安全性好的特性可伸缩可扩展易维护12解决方案--应用服务器应用服务器可以为服务器端构件提供:一致性,事务处理与负载平衡从而简化了编程工作但在J2EE之前,这些API是应用服务器相关的!13解决方案—JavaEE
JavaEE提供了一套完整的解决所有这些问题的框架方案:提供了分布式、可移植构件的框架为构件与应用服务器提供标准API简化了服务器端中间层构件的设计14解决方案—JavaEEJavaEE对开发者和用户来说意味着:更短的开发时间可重用构件JSPEJB更简化的连接XML,JDBC,RMI-IIOP15JavaEE技术架构J2EE架构:16容器和构件17JavaEE核心技术J2EE核心技术:13种
EJB、CORBA、RMI、JSP、
JavaServlet、JavaBean、JDBCXML、JMS……18JavaEE核心技术--EJBEJB(EnterpriseJavaBeans):EJB不是一个具体的产品,而是一个Java服务器端组件开发的规范,软件厂商根据它来实现EJB服务器。使用EJB,Java程序员可以将一些定义明确的程序块组合到一起,从而方便、快捷地建构分布式应用程序。使用EJB可以使整个程序分块明确,并且EJB可以使用其它EJB或JDBC等服务,从而增强了分布式应用程序的可扩展性和性能;EJB规范在简化分布式应用程序开发复杂性方面做了大量的工作,所以EJB程序员不必太担心事务处理、多线程、资源管理等方面的问题,可以专注于支持应用所需的商业逻辑,而不用担心周围框架的实现问题。EJB的使用增强了整个系统程序的可靠性、可管理性和可移植性。19EJB容器是:
EJB的运行环境。它提供规范中定义的接口使EJB类访问所需的服务。容器厂商也可以在容器或服务器中提供额外服务的接口。它的责任包括:JavaEE核心技术--EJB20JavaEE核心技术--EJBEJB服务器是:
管理EJB容器的高端进程或应用程序,并提供对系统服务的访问。EJB服务器也可以提供厂商自己的特性,如优化的数据库访问接口,对其他服务(如CORBA服务)的访问。一个EJB服务器必须提供支持对JNDI的名字服务和TS事务服务的可访问。21JavaEE核心技术--EJBEJB组件的三种类型:(1)EntityBean(实体Bean):实体Bean代表数据对象,通常代表的是数据表记录集的一行,一个实体EJB可以同时与多个客户进行交互。(2)SessionBean(会话Bean):会话EJB向客户提供一定的服务,如:特定的商业逻辑、数据库查询等;(3)Message-DrivenBean(消息驱动Bean):以上两种Bean以同步方式为EJB客户提供服务。消息驱动Bean采用Java消息服务JMS,客户程序可以将消息发送给消息队列,消息驱动Bean检索消息队列,执行其内容。22JavaEE核心技术--EJB实体Bean——业务数据模型对业务概念的反映,也称为领域类(domainclass)在持久存储中业务实体的对象视图提供访问和操作数据的对象封装支持多用户共享的数据可以从数据库中存储的属性重新实例化EJB服务器崩溃后仍可重构与数据库中的数据有一样长的生命23JavaEE核心技术--EJB实体Bean的持久性——自管理的持久性优点:开发者有完全的控制无需复杂的提供商支持缺点:编码复杂在改变时需要重新编码和部署影响可移植性24JavaEE核心技术--EJB实体Bean的持久性——容器管理的持久性优点:提供商解决,可能会有更好的缓冲和性能在部署描述符中进行改变即可可移植性好缺点:对容器提供商的工具依赖性强可能不易反映复杂的数据关系25JavaEE核心技术--EJB会话bean:经常用于涉及多个实体bean的业务处理和控制逻辑。26JavaEE核心技术--EJB会话bean:相对生命较短(一般与客户同步)在EJB服务器崩溃时被删除不表示数据库中的数据,但可以访问数据作为一个客户的代表执行功能可以加入事务27JavaEE核心技术--EJB何时使用会话bean:使用会话bean对针对于某一客户的处理或控制对象建模;对工作流、任务和管理活动等建模(如订房、购物车等);协调多个实体bean,控制实体bean之间的交互;将业务应用逻辑从客户端转移到服务器端。28JavaEE核心技术--EJB会话bean与实体bean的比较29JavaEE核心技术--EJB两种类型的会话bean无状态(Stateless)bean表达一个无状态的服务(如列表,mail)不存储用户相关信息,进行对请求的响应暂态的可用来构造响应频繁而简单的访问的bean池有状态(Stateful)bean维护客户状态30JavaEE核心技术--EJB实现EJB的三个关键构件EJBHome
接口(扩展javax.ejb.EJBHome接口):使用了factory设计模式,定义了创建、查找EJB的方法。EJBObject接口(扩展javax.ejb.EJBObject接口):使用了proxy设计模式,定义了在bean中实现的业务逻辑方法。Bean实现类(实现javax.ejb.EntityBean/SessionBean):实现业务逻辑。31JavaEE核心技术--EJBEJB的实现举例//businessmethodspublicinterface
AccountextendsEJBObject
{//returntheaccountinformationcorrespondingtothisaccount.publicAccountModel
getDetails()throwsRemoteException;//updatesthecontactinformationforthespecifiedaccountpublicvoid
changeContactInformation(ContactInformationinfo)throwsRemoteException;}32JavaEE核心技术--EJBEJB的实现举例publicinterface
AccountHome
extends
javax.ejb.EJBHome
{
publicAccount
create(String
userId,
Stringstatus,ContactInformationinfo)
throwsRemoteException,DuplicateKeyException,CreateException;
publicAccount
findByPrimaryKey
(StringuserId)
throwsRemoteException,FinderException;}33JavaEE核心技术--EJBEJB的实现举例publicclass
AccountEJB
implements
EntityBean
{//entitystateprivateString
userId;privateString
status;privateContactInformation
info;//resourcesprivateEntityContextcontext;//implementaccountinterfacebusinessmethodspublicvoid
changeContactInformation(ContactInformation
info){=info;}publicAccountModel
getDetails(){return(new
AccountModel(userId,status,info));}34JavaEE核心技术--EJBEJB的实现举例//mustmatchsignaturesofcreatemethodsinHomeinterfacepublicStringejbCreate(StringuserId,Stringstatus,ContactInformationinfo)
throwsDuplicateKeyException,CreateException{ //settheinstancedata
this.userId=userId;
this.status=status;
=info;
AccountDAOADAO=newAccountDAO(userId,status,info); try{
ADAO.create();
//insertdataindatabase
return(userId);
//returnprimarykey
}catch(java.sql.SQLExceptionse){ thrownewCreateException("SQLExceptionincreate:"+se); }}35JavaEE核心技术--EJBEJB的实现举例36JavaEE核心技术--CORBACORBA体系结构:核心-ORB37JavaEE核心技术--CORBACORBA技术:CORBA(CommonObjectRequestBrokerArchitecture)是分布式对象体系结构,它独立于平台,也独立于语言。在这个体系结构中,对象可以被本机上的客户或远程客户通过方法激活来存取。客户(对象或应用)无须知道被调用对象(称为服务对象)的运行环境,也无须知道实现这个对象的编程语言,客户只要知道服务对象的逻辑地址和提供的接口。这种互操作性的关键是IDL(InterfaceDefinitionLanguage、接口定义语言),IDL说明对象接口中的方法,这些方法可以被其他对象(或应用)激活。38JavaEE核心技术--RMIRMI技术:RMI(RemoteMethodInvoke)是一种被EJB使用的更底层的协议,正如其名字所表示的那样,RMI协议调用远程对象上方法,使用序列化方式在客户端和服务器端的对象之间传递数据。39JavaEE核心技术--RMIRMI和CORBA相比:两者的关键差别在于语言环境,JavaRMI是一个分布式对象计算的纯Java解决方案(如,在JavaRMI中,对象的接口用Java定义,而不是用IDL);其次,CORBA没有定义安全服务,而JavaRMI继承了Java的安全性;再者,CORBA有不同的实现,不同的独立软件开发商的不同实现均有独特性,这使得在不同平台上的匹配比较困难,而且不是所有CORBA产品开发商都支持所有平台,而几乎所有平台都支持Java虚拟机,因此JavaRMI具有更高的可移植性。如果客户对象和服务对象都基于Java虚拟机,那么JavaRMI是分布对象计算的最好选择。最后,IIOP已经提供了JavaRMI和CORBA的互操作能力,而且两者的发展有互相借鉴的趋势。40JavaEE核心技术--JSPJSP技术:JSP是服务器端的脚本语言,是以Java和Servlet为基础开发而成的动态网页生成技术,它的底层实现是JavaServlet。JSP(JavaServerPages)页面由HTML代码和嵌入其中的Java代码所组成。客户端向服务器发出请求以后,服务器对页面中的Java代码进行处理,然后将生成的HTML页面返回给客户端的浏览器。41JavaEE核心技术--JSPJSP技术:特点:面向对象,跨平台,和Servlet一样稳定,可以使用Servlet提供的API,克服了Servlet的缺点。应用:一般和JavaBeans结合使用,从而将界面表现和业务逻辑分离。42JavaEE核心技术--JSPJSP与ASP的相似之处:都是运行于服务器端的脚本语言,两者都是动态网页生成技术。这两项技术都使用HTML来决定网页的版面,都是在HTML代码中混合某种程序代码,由语言引擎解释执行程序代码。HTML代码主要负责描述信息的显示样式,而程序代码则用来描述处理逻辑。43JSP与ASP的不同之处:JSP是由Sun推出的一项技术,是基于JavaServlet以及整个java体系的Web开发技术,利用这一技术可以建立先进、安全和跨平台的动态网站。ASP是MS公司推出的技术,只能在MS的平台上运行,无法实现跨平台,也无安全性保障。ASP下的编程语言是VBScript之类的脚本语言,而JSP使用的是Java。ASP与JSP还有一个更为本质的区别:两种语言引擎用完全不同的方式处理页面中嵌入的程序代码。在ASP下,VBScript代码被ASP引擎解释执行;在JSP下,代码被编译成Servlet
并由Java虚拟机执行,这种编译操作仅在对JSP页面的第一次请求时发生。JavaEE核心技术--JSP44JavaEE核心技术--ServletJavaServlet技术:Servlets(=Server+Applet):是一些运行于Web服务器端的Java小程序,用来扩展Web服务器的功能。Servlet是一种扩展Web服务器功能的技术,而且由于它是用Java编写的,所以能够访问整个JavaAPI库,包括用于访问企业数据库的JDBCAPI。Servlets用特定的Java解决方案替代了其它的Web服务器方编程模式(如:CGI,ISAPI等),因而继承了Java的所有特性(跨平台、多线程、OO)。用来编写Servlets的ServletAPI对于服务器环境和协议没有任何特殊的要求,所以Servlets具有很强的可移植性,也不像利用CGI程序等其它方式那样具有性能局限。Servlets也同样使用HTTP协议与客户端进行通讯,所以有时也称Sevlets为“HTTPServlets”。45JavaEE核心技术--ServletJavaServlet和JSP的比较:相似:两者都是基于Java的技术,所以都继承了Java的所有特性(跨平台、多线程、OO),都可以使用Java强大的API。两者工作方式相似:JSP代码先被JSP容器转换为Servlet代码再编译为类。两者在J2EE体系结构中的工作层次相同,都负责与客户端的连接。不同:编程方式不同。Servlets是一些运行于Web服务器端的Java小程序;而JSP是脚本,编写起来更简单容易。应用目的不同。Servlet主要用于从客户端接收请求信息,而JSP主要负责将服务器端信息传送到客户端。使用JSP的真正意义在于:可以将界面设计和业务逻辑设计分离。46JavaEE核心技术--JavaBeanJavaBean技术:JavaBean是基于Java的组件模型,类似Microsoft的COM组件。JavaBean通过Java虚拟机(JavaVirtualMachine)执行,运行JavaBean最小的需求是JDK1.1或者以上的版本。在Java平台中,通过JavaBean可以无限扩充Java程序的功能,通过JavaBean的组合可以快速的生成新的应用程序。对于程序员来说,最好的一点就是JavaBean可以实现代码的重复利用,另外对于程序的易维护性等等也有很重大的意义。JavaBean传统的应用在于可视化的领域,如AWT下的应用。自从Jsp诞生后,JavaBean更多的应用在了非可视化领域,在服务器端应用方面表现出来了越来越强的生命力。47JavaEE核心技术--JDBCJDBC技术:JDBC是一组API,定义了用来访问数据源的标准Java类库,使用这个类库可以以一种标准的方法、方便地访问数据库资源。JDBC对数据库的访问具有平台无关性。
JDBCAPI为访问不同的数据库提供了一种统一的途径,象ODBC一样,JDBC对开发者屏蔽了一些细节问题。JDBC的目标是使应用程序开发人员使用JDBC可以连接任何提供了JDBC驱动程序的数据库系统,这样就使得程序员无需对特定的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 制作铝瓦合同范本
- 供货合同范本粮食
- 出国抹灰劳务合同范本
- 3人入股合同范例
- 中标后转让合同范本
- 农村购房正规合同范本
- 劳务餐饮合同范本
- 加工机械销售合同范本
- 医院垃圾服务合同范本
- 停车服务合同范本
- 房地产 -中建科工五大类型项目成本指标库
- 2024小红书保健品行业营销通案
- 未来网络支撑下的数字身份体系:产业和技术发展趋势(2024年)定稿版本
- 新《卷烟营销》理论知识考试题库(附答案)
- 诺如病毒的护理
- 三年级下册语文核心素养教案电子版
- 中考英语688高频词大纲词频表
- 知识产权保护与跨境执法合作
- 肉类食品配送服务投标方案(技术方案)
- 含新能源发电接入的电力系统低频振荡阻尼控制研究综述
- 财务管理学(第10版)课件 第3章 财务分析
评论
0/150
提交评论