欢迎来到天天文库
浏览记录
ID:41361408
大小:385.56 KB
页数:76页
时间:2019-08-22
《《高级软件工程》PPT课件》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第十讲构件运行环境构件运行环境对于软件构件的重要性完全类似于操作系统对作业的重要性构件运行环境的出现甚至正在改变网络软件的高层运行模式2内容概述构件容器的功能容器与实现体的合作会话构件实例的管理实体构件实例的管理3一、概述从运行环境角度看面向对象技术与构件技术1、构件上下文2、构件容器3、构件约束1.构件运行环境主要关心哪些问题?41、构件上下文我们日常生活中的任何语言都有一定的上下文(语境)同样一句话由不同的人说出来其含义可能不同由同一个人说出来但由不同的人听起来其含义也可能不同完全相同的听说两个人在不同的环境中说的相同一句话含义也可能不同不同的地点、不同的时间、不同
2、的旁听者等共同构成了语言的语境5在网络环境中一个计算过程(构件)受环境的影响很大例如:客户的身份服务体能提供的访问带宽客户的请求方式等都会对构件的具体服务方式产生影响例如:是否为客户提供服务提供何种精度的服务使用什么样的交互协议等上述影响构件服务效果的各种因素都被认为是构件的上下文构件运行环境需要为构件获取这些信息并帮助构件做出适当的反应62、构件容器在编程语言中每个数据对象都是数据值的容器COM套间通过线程模型将不同的对象分割到不同的运行空间中使得它们的运行相对独立MTS引入了事务性上下文概念共享相同事务域的多个对象处于同一个线程中这同样将它们与系统的其他部分隔离开来
3、在.NET的CLR中同时吸取了COM与MTS中的上述技术跨越上下文的访问被执行引擎所控制并可能进行一些特殊处理EJB模型中的容器概念比较完善除了采用类加载器分别加载不同的构件外EJB容器还为EJB构件实例承担了记录上下文、控制生命周期、控制对实例的访问等任务73、构件约束构件约束是关于构件所实现功能的约束这些约束传统上被编写到构件代码中但由于这样往往导致系统约束性需求的实现分布在不同的构件代码中不利于约束需求的演化可以利用一些新技术将构件约束的实现与构件的功能代码进行分离以便于对这些约束进行统一实施截取器即是针对上述问题的一种解决实现机制8截取器是一种十分重要的设计模式
4、用于在构件接收消息与发送消息过程中对消息进行截取以进行必要的加工或处理例如:在构件为客户的请求进行服务之前检查安全上下文,以决定是否为构件服务检查事务上下文,以决定为构件提供什么样的可靠性支持对客户的请求进行记录,以供将来分析系统的运行状况在构件为客户的请求进行服务之后检查结果返回值,确认返回值的有效性等通过引入构件截取器可以将构件代码中与业务逻辑无关的约束性内容剥离出来由截取器与一些公共服务互相配合共同完成构件约束性需求的实现这不仅使构件代码更为简洁还提高了应用系统的适应性9二、构件容器的功能网络环境中的软件必须考虑客户访问量问题一个拥有大量用户的系统可能需要同时运行
5、成千上万的对象如果不控制系统资源的使用将使系统因为资源不足而大大降低响应时间甚至导致系统不可用应用服务器通过容器对大量构件实例的有效管理来提高系统的资源利用率所依赖的主要机制为:实例池冻化/活化生命周期管理等101、实例池实例池技术是系统软件中普遍使用的共享技术其核心思想是将暂时不用的资源实例缓存起来放到实例池中当下一个客户需要访问资源时直接从实例池中取出来为客户服务实例池技术带来的好处主要有两方面:其一,有效地减少对实例频繁的创建与删除工作提高了响应速度其二,通过设定实例池的大小可以限制访问客户的数目以保证正在访问客户的服务质量实现构件实例池的基本方法是:在加载系统时
6、,为一个构件类型创建多个实例。当一个客户提出请求时,从实例池中提取构件实例建立起与客户的关联当客户不再需要构件服务时,将实例放回实例池112、冻化/活化有态构件不同于无态构件的地方在于:有态构件保持一个业务过程中前后方法调用之间的状态这个状态代表着有态构件实例与其客户之间的一个对话对有态构件实例进行有效资源管理的技术是冻化、活化技术当一个构件实例的访问频率较低而此时又有大量客户需要服务时可以将这个有态构件实例挂起以减少系统中构件实例的数目挂起有态构件的实例需要保持其话态,实例的状态将被序列化序列化构件实例时除了需要将该实例从内存中暂时删除外还需要将该实例的状态保存到外存
7、中(例如一个文件系统等)当这个实例的客户再次访问该实例时容器将首先构造一个新实例然后从外存中取出实例的状态并恢复实例的状态冻化/活化技术也适用于实体构件123、生命周期管理构件的实现体一般随着应用系统的部署被加载到应用服务器中被构件容器所管理例如:创建构件实例查找构件实例删除构件实例接收客户请求消息等构件的生命周期管理主要是指构件实例的生命周期管理13三、容器与实现体的合作为了完成客户的请求构件容器与构件实现体必须进行很好地分工与协作:如果请求与类型接口中的方法相对应则主要由构件容器负责进行构件的创建、查找、删除等操作尽管最终可能还是需要
此文档下载收益归作者所有