《高级软件工程》PPT课件.ppt
《《高级软件工程》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《高级软件工程》PPT课件.ppt(76页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、高级软件工程高级软件工程构件运行环境构件运行环境 1/76第第 十十 讲讲构件运行环境构件运行环境1构件运行环境构件运行环境 2/76高级软件工程高级软件工程构件运行环境对于软件构件的重要性构件运行环境对于软件构件的重要性完全类似于操作系统对作业的重要性完全类似于操作系统对作业的重要性构件运行环境的出现构件运行环境的出现甚至正在改变网络软件的高层运行模式甚至正在改变网络软件的高层运行模式 2构件运行环境构件运行环境 3/76高级软件工程高级软件工程内内 容容n概述概述n构件容器的功能构件容器的功能n容器与实现体的合作容器与实现体的合作n会话构件实例的管理会话构件实例的管理n实体构件实例的管理实
2、体构件实例的管理3构件运行环境构件运行环境 4/76高级软件工程高级软件工程一、概述一、概述从运行环境角度看面向对象技术与构件技术从运行环境角度看面向对象技术与构件技术1、构件上下文、构件上下文2、构件容器、构件容器3、构件约束、构件约束1构件运行环境主要关心哪些问题?构件运行环境主要关心哪些问题?4构件运行环境构件运行环境 5/76高级软件工程高级软件工程1、构件上下文、构件上下文我们日常生活中的任何语言都有一定的上下文(语境)我们日常生活中的任何语言都有一定的上下文(语境)同样一句话同样一句话由不同的人说出来由不同的人说出来 其含义可能不同其含义可能不同由同一个人说出来由同一个人说出来 但
3、由不同的人听起来其含义也可能不同但由不同的人听起来其含义也可能不同完全相同的听说两个人完全相同的听说两个人 在不同的环境中说的相同一句话在不同的环境中说的相同一句话 含义也可能不同含义也可能不同不同的地点、不同的时间、不同的旁听者等不同的地点、不同的时间、不同的旁听者等共同构成了语言的语境共同构成了语言的语境5构件运行环境构件运行环境 6/76高级软件工程高级软件工程在网络环境中在网络环境中 一个计算过程(构件)受环境的影响很大一个计算过程(构件)受环境的影响很大例如:例如:客户的身份客户的身份服务体能提供的访问带宽服务体能提供的访问带宽客户的请求方式客户的请求方式 等等都会对构件的具体服务方
4、式产生影响都会对构件的具体服务方式产生影响例如:例如:是否为客户提供服务是否为客户提供服务提供何种精度的服务提供何种精度的服务使用什么样的交互协议使用什么样的交互协议 等等上述影响构件服务效果的各种因素上述影响构件服务效果的各种因素都被认为是构件的上下文都被认为是构件的上下文构件运行环境需要构件运行环境需要为构件获取这些信息为构件获取这些信息并帮助构件做出适当的反应并帮助构件做出适当的反应6构件运行环境构件运行环境 7/76高级软件工程高级软件工程2、构件容器、构件容器在编程语言中在编程语言中 每个数据对象都是数据值的容器每个数据对象都是数据值的容器COM套间通过线程模型将不同的对象分割到不同
5、的运行空间中套间通过线程模型将不同的对象分割到不同的运行空间中使得它们的运行相对独立使得它们的运行相对独立MTS引入了事务性上下文概念引入了事务性上下文概念共享相同事务域的多个对象处于同一个线程中共享相同事务域的多个对象处于同一个线程中这同样将它们与系统的其他部分隔离开来这同样将它们与系统的其他部分隔离开来在在.NET的的CLR中同时吸取了中同时吸取了COM与与MTS中的上述技术中的上述技术跨越上下文的访问被执行引擎所控制跨越上下文的访问被执行引擎所控制并可能进行一些特殊处理并可能进行一些特殊处理EJB模型中的容器概念比较完善模型中的容器概念比较完善除了除了 采用类加载器分别加载不同的构件外采
6、用类加载器分别加载不同的构件外EJB容器还为容器还为EJB构件实例承担了构件实例承担了记录上下文、控制生命周期、控制对实例的访问等任务记录上下文、控制生命周期、控制对实例的访问等任务 7构件运行环境构件运行环境 8/76高级软件工程高级软件工程3、构件约束、构件约束构件约束是关于构件所实现功能的约束构件约束是关于构件所实现功能的约束这些约束传统上被编写到构件代码中这些约束传统上被编写到构件代码中但由于这样往往导致系统约束性需求的实现但由于这样往往导致系统约束性需求的实现分布在不同的构件代码中分布在不同的构件代码中不利于约束需求的演化不利于约束需求的演化可以利用一些新技术可以利用一些新技术将构件
7、约束的实现与构件的功能代码进行分离将构件约束的实现与构件的功能代码进行分离以便于对这些约束进行统一实施以便于对这些约束进行统一实施截取器即是针对上述问题的一种解决实现机制截取器即是针对上述问题的一种解决实现机制8构件运行环境构件运行环境 9/76高级软件工程高级软件工程截取器是一种十分重要的设计模式截取器是一种十分重要的设计模式用于在构件接收消息与发送消息过程中对消息进行截取用于在构件接收消息与发送消息过程中对消息进行截取以进行必要的加工或处理以进行必要的加工或处理例如:例如:在构件为客户的请求进行服务之前在构件为客户的请求进行服务之前检查安全上下文,以决定是否为构件服务检查安全上下文,以决定
8、是否为构件服务检查事务上下文,以决定为构件提供什么样的可靠性支持检查事务上下文,以决定为构件提供什么样的可靠性支持对客户的请求进行记录,以供将来分析系统的运行状况对客户的请求进行记录,以供将来分析系统的运行状况在构件为客户的请求进行服务之后在构件为客户的请求进行服务之后检查结果返回值,确认返回值的有效性等检查结果返回值,确认返回值的有效性等通过引入构件截取器通过引入构件截取器可以将构件代码中与业务逻辑无关的约束性内容剥离出来可以将构件代码中与业务逻辑无关的约束性内容剥离出来由截取器与一些公共服务互相配合由截取器与一些公共服务互相配合共同完成构件约束性需求的实现共同完成构件约束性需求的实现这不仅
9、使构件代码更为简洁这不仅使构件代码更为简洁还提高了应用系统的适应性还提高了应用系统的适应性9构件运行环境构件运行环境 10/76高级软件工程高级软件工程二、构件容器的功能二、构件容器的功能 网络环境中的软件必须考虑客户访问量问题网络环境中的软件必须考虑客户访问量问题一个拥有大量用户的系统可能需要同时运行成千上万的对象一个拥有大量用户的系统可能需要同时运行成千上万的对象如果不控制系统资源的使用如果不控制系统资源的使用 将使系统将使系统因为资源不足而大大降低响应时间因为资源不足而大大降低响应时间甚至导致系统不可用甚至导致系统不可用应用服务器通过容器对大量构件实例的有效管理应用服务器通过容器对大量构
10、件实例的有效管理来提高系统的资源利用率来提高系统的资源利用率所依赖的主要机制为所依赖的主要机制为:实例池实例池冻化冻化/活化活化生命周期管理等生命周期管理等 10构件运行环境构件运行环境 11/76高级软件工程高级软件工程1、实例池、实例池实例池技术是系统软件中普遍使用的共享技术实例池技术是系统软件中普遍使用的共享技术其核心思想是将暂时不用的资源实例缓存起来其核心思想是将暂时不用的资源实例缓存起来放到实例池中放到实例池中当下一个客户需要访问资源时当下一个客户需要访问资源时 直接从实例池中取出来为客户服务直接从实例池中取出来为客户服务实例池技术带来的好处主要有两方面:实例池技术带来的好处主要有两
11、方面:其一,有效地减少对实例频繁的创建与删除工作其一,有效地减少对实例频繁的创建与删除工作 提高了响应速度提高了响应速度其二,通过设定实例池的大小其二,通过设定实例池的大小 可以限制访问客户的数目可以限制访问客户的数目以保证正在访问客户的服务质量以保证正在访问客户的服务质量 实现构件实例池的基本方法是:实现构件实例池的基本方法是:在加载系统时,为一个构件类型创建多个实例。在加载系统时,为一个构件类型创建多个实例。当一个客户提出请求时,从实例池中提取构件实例当一个客户提出请求时,从实例池中提取构件实例建立起与客户的关联建立起与客户的关联当客户不再需要构件服务时,将实例放回实例池当客户不再需要构件
12、服务时,将实例放回实例池11构件运行环境构件运行环境 12/76高级软件工程高级软件工程2、冻化、冻化/活化活化有态构件不同于无态构件的地方在于:有态构件不同于无态构件的地方在于:有态构件保持一个业务过程中前后方法调用之间的状态有态构件保持一个业务过程中前后方法调用之间的状态这个状态代表着有态构件实例与其客户之间的一个对话这个状态代表着有态构件实例与其客户之间的一个对话对有态构件实例进行有效资源管理的技术是冻化、活化技术对有态构件实例进行有效资源管理的技术是冻化、活化技术当一个构件实例的访问频率较低当一个构件实例的访问频率较低 而此时又有大量客户需要服务时而此时又有大量客户需要服务时可以将这个
13、有态构件实例挂起可以将这个有态构件实例挂起 以减少系统中构件实例的数目以减少系统中构件实例的数目挂起有态构件的实例需要保持其话态,实例的状态将被序列化挂起有态构件的实例需要保持其话态,实例的状态将被序列化序列化构件实例时序列化构件实例时 除了需要将该实例从内存中暂时删除外除了需要将该实例从内存中暂时删除外还需要将该实例的状态保存到外存中(例如一个文件系统等)还需要将该实例的状态保存到外存中(例如一个文件系统等)当这个实例的客户再次访问该实例时当这个实例的客户再次访问该实例时 容器将首先构造一个新实例容器将首先构造一个新实例 然后从外存中取出实例的状态然后从外存中取出实例的状态并恢复实例的状态并
14、恢复实例的状态冻化冻化/活化技术也适用于实体构件活化技术也适用于实体构件 12构件运行环境构件运行环境 13/76高级软件工程高级软件工程3、生命周期管理、生命周期管理构件的实现体一般随着应用系统的部署被加载到应用服务器中构件的实现体一般随着应用系统的部署被加载到应用服务器中被构件容器所管理被构件容器所管理例如:创建构件实例例如:创建构件实例查找构件实例查找构件实例删除构件实例删除构件实例接收客户请求消息接收客户请求消息 等等构件的生命周期管理主要是指构件实例的生命周期管理构件的生命周期管理主要是指构件实例的生命周期管理 13构件运行环境构件运行环境 14/76高级软件工程高级软件工程三、容器
15、与实现体的合作三、容器与实现体的合作 为了完成客户的请求为了完成客户的请求构件容器与构件实现体必须进行很好地分工与协作:构件容器与构件实现体必须进行很好地分工与协作:如果请求与类型接口中的方法相对应如果请求与类型接口中的方法相对应则主要由构件容器负责则主要由构件容器负责进行构件的创建、查找、删除等操作进行构件的创建、查找、删除等操作尽管最终可能还是需要构件实现体的介入尽管最终可能还是需要构件实现体的介入如果请求与实例接口中的方法相对应如果请求与实例接口中的方法相对应则说明这是与构件业务逻辑相关的请求则说明这是与构件业务逻辑相关的请求必须由构件实现体进行服务必须由构件实现体进行服务容器将代理客户
16、向构件实现体发送这些业务请求容器将代理客户向构件实现体发送这些业务请求1、构件实现体向容器提供的方法、构件实现体向容器提供的方法2、容器向构件实现体提供的方法、容器向构件实现体提供的方法 3、构件实现体与构件接口的方法、构件实现体与构件接口的方法14构件运行环境构件运行环境 15/76高级软件工程高级软件工程1、构件实现体向容器提供的方法、构件实现体向容器提供的方法容器是构件的容器是构件的“操作系统操作系统”构件实现体所有的方法都是通过容器发生作用的构件实现体所有的方法都是通过容器发生作用的这些方法可以被大体分为两类这些方法可以被大体分为两类一类是通过容器提供给客户的一类是通过容器提供给客户的
17、另一类是专门提供给容器以供管理的另一类是专门提供给容器以供管理的后者包括:基本接口后者包括:基本接口EnterpriseBean用于定义会话构件的接口用于定义会话构件的接口SessionBean用于定义实体构件的接口用于定义实体构件的接口EntityBean以及对于会话构件可选的接口以及对于会话构件可选的接口SessionSynchronization2EJB构件与构件运行环构件与构件运行环境之间的接口有哪些?境之间的接口有哪些?15构件运行环境构件运行环境 16/76高级软件工程高级软件工程EnterpriseBean只表明任何构件都是可序列化的:只表明任何构件都是可序列化的:package
18、 javax.ejb;import;public interface EnterpriseBean extends Serializable16构件运行环境构件运行环境 17/76高级软件工程高级软件工程所有会话构件必须实现所有会话构件必须实现SessionBean接口:接口:package javax.ejb;import;public interface SessionBean extends EnterpriseBean public abstract void ejbActivate()throws EJBException,RemoteException;public abstrac
19、t void ejbPassivate()throws EJBException,RemoteException;public abstract void ejbRemove()throws EJBException,RemoteException;public abstract void setSessionContext(SessionContext sessioncontext)throws EJBException,RemoteException;17构件运行环境构件运行环境 18/76高级软件工程高级软件工程lsetSessionContext 将当前会话构件实例与由容器管理的将当前
20、会话构件实例与由容器管理的Context(事务(事务Context、安全、安全Context 等)进行关联等)进行关联 并将其作为话态的一部分并将其作为话态的一部分lejbRemove 用于由容器将构件实例删除用于由容器将构件实例删除ejbRemove方法与方法与ejbPassivate释放的资源基本一样释放的资源基本一样lejbPassivate 用于由容器冻化实例用于由容器冻化实例lejbActivate 用于由容器活化实例用于由容器活化实例 由于容器自动利用由于容器自动利用Java语言的序列化机制进行冻化、活化过程语言的序列化机制进行冻化、活化过程 上述操作在构件开发过程中大多数可忽略上
21、述操作在构件开发过程中大多数可忽略18构件运行环境构件运行环境 19/76高级软件工程高级软件工程对于会话构件:可选的对于会话构件:可选的SessionSynchronization接口接口package javax.ejb;import;public interface SessionSynchronization public abstract void afterBegin()throws.;public abstract void afterCompletion(boolean flag)throws.;public abstract void beforeCompletion()th
22、rows.;19构件运行环境构件运行环境 20/76高级软件工程高级软件工程会话构件可以有选择性地实现会话构件可以有选择性地实现SessionSynchronization接口接口这个接口提供了一些同步通告这个接口提供了一些同步通告实例可以用这些方法在事务中管理数据的缓冲等实例可以用这些方法在事务中管理数据的缓冲等afterBegin方法用于标明方法用于标明 新事务的开始新事务的开始container在事务内的第一个在事务内的第一个business方法前调用它方法前调用它beforeCompletion方法用于标明方法用于标明 客户已经完成当前事务的工作客户已经完成当前事务的工作 但是还没有提
23、交给实例使用的资源管理者但是还没有提交给实例使用的资源管理者 此时实例应该写出缓冲的数据此时实例应该写出缓冲的数据 实例可在实例可在session context中调用中调用setRollbackOnly来来卷回原来状态卷回原来状态afterCompletion方法用于标明当前方法用于标明当前transaction已经结束已经结束结束状态结束状态true表示已提交表示已提交 false表示已卷回表示已卷回因为会话构件实例的话态不是事务性的因为会话构件实例的话态不是事务性的卷回后需要手动调整它的状态卷回后需要手动调整它的状态 20构件运行环境构件运行环境 21/76高级软件工程高级软件工程关于关
24、于SessionSynchronization:所有容器提供者必须支持所有容器提供者必须支持SessionSynchronization它仅只对构件实现者可选它仅只对构件实现者可选.只有容器管理事务的有态会话构件只有容器管理事务的有态会话构件 可以实现可以实现SessionSynchronization;无态会话构件不允许实现无态会话构件不允许实现SessionSynchronization。构件管理事务的会话构件不必依赖构件管理事务的会话构件不必依赖SessionSynchronization因为构件自身管理事务因为构件自身管理事务 不必向容器提供同步机制不必向容器提供同步机制21构件运行环
25、境构件运行环境 22/76高级软件工程高级软件工程package javax.ejb;import;public interface EntityBean extends EnterpriseBean public abstract void setEntityContext(EntityContext entitycontext)throws;public abstract void unsetEntityContext()throws;public abstract void ejbActivate()throws;public abstract void ejbPassivate()th
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 高级软件工程 高级 软件工程 PPT 课件
限制150内