中间件技术原理与应用初学者必看ppt课件.ppt
中间件技术原理与应用,刘 冰长春工业大学,课程目标,构造大型的分布式软件系统时将遇到 什么样的问题解决这些问题的原理与技术:构件技术与中间件技术相关的工业标准如 COM、CORBA、J2EE等,1、操作系统2、计算机网络3、数据库原理4、软件工程5、Java/C,相关课程,开放系统,互操作性,中间件,1,2,3,远地过程调用及其增强,分布式计算环境,4,5,第1章 中间件产生背景及分布式计算环境,什么是分布式软件,软件面临的问题软件正变得无处不在,同时软件所面临的挑战也正在日益加剧 复杂度高 开发周期长 可靠性保证难,什么是分布式软件,本课程关注分布式软件系统的开发支撑随着网络与通信技术的发展,分布式软件的应用越来越广泛,分布式软件在计算机软件应用领域扮演者非常重要的角色。分布式软件一般比集中式软件规模大、复杂,是软件开发复杂性的集中体现。,什么是分布式软件,分布式软件网络环境:一群通过网络互相连接的处理系统,每个处理节点由处理机硬件、操作系统及基本通信软件等组成。分布式软件:运行在网络环境中的软件系统。两种典型的应用途径将分布式软件系统看做直接反映了现实世界中的分布性用于改进某些应用的运行性能,计算模式的发展过程基于主机的系统(分时共享、资源共享)两层Client/Server系统客户端负担仍然比较重仍然需要客户端进行较复杂的数据处理客户端的可移植性不好处理复杂必然牵涉更多的移植性问题每个客户端上都要安装数据库驱动程序系统的可维护性不好客户端包含过多的商业逻辑商业逻辑与人机交互界面交织在一起数据的安全性不好,1.1开放系统与互操作性概述,计算模式的发展过程三层(n层)体系架构表示层 用户层业务逻辑层应用层数据层数据库服务器 基于Web的三层(N层)体系结构,1.1开放系统与互操作性概述,开放系统基本组成硬件 包括PC,工作站,大中型机,各式各样的 嵌入式设备,移动设备;软件 各类操作系统、应用软件;网络 各类网络结构、网络协议。开放系统面临的问题 远程性 并发行 无全局状态 部分失败 异步性 异质性 自主性 联合型 伸缩性 发展性 移动性,1.1续,开放系统特点开放的:提供可移植性和协同工作;集成的:有助于对付异质性;灵活的:有助于对付移动性;模块化的:灵活性的基础;可联合的可管理的安全的透明的:支撑软件和硬件的异质性;满足服务质量需求,1.1续,开放系统必具特性可移植性(Portability)可互操作性(Interoperability)可伸缩性(Scalability)易获得性(Availability),1.1续,开放系统构造用轮廓勾划;轮廓由系统管理 用户界面 安全性 编程服务 互操作服务 通信服务 信息实体 七个成分组成;对轮廓的各成分标准化,即成开放系统。,1.1续,开放系统开放程度表,1.1续,互操作性本质:从异质环境(异种体系结构、异种操作系统、异种网络等)中获得资源的透明动用能力。 面向计算资源的互操作性 面向信息资源的互操作性(如数据库)定义:在一个由异质实体构成的网络环境中,当应用在网络的结点上运行时,它可以透明地动用网中其他结点上的资源,并借助这些资源与本结点上的资源共同来完成某个或某组任务。,1.1续,互操作性定义:在一个由异质实体构成的网络环境中,当应用在网络的结点上运行时,它可以透明地动用网中其他结点上的资源,并借助这些资源与本结点上的资源共同来完成某个或某组任务。本质:从异质环境(异种体系结构、异种操作系统、异种网络等)中获得资源的透明动用能力。 面向计算资源的互操作性 面向信息资源的互操作性(如数据库),1.1续,现代应用系统的基本特征分布 任务已不只是在单机上运行,而是由网络中多台计算机上的相关应用共同协作完成,需考虑网络传输、数据安全、数据一致性、同步等诸多问题;异构 计算机硬件、操作系统、网络协议、数据库系统以及开发工具种类繁多,需考虑数据表示、调用接口、处理方式等诸多问题;动态协作 参与协作的应用允许位置透明性、迁移透明性、负载平衡性等需求。,1.2 中间件概述,1.2续,1.2续,利用中间件进行协同工作的系统,1.2续,中间件定义中间件(Middleware)是一种软件,处于系统软件(操作系统和网络软件)与应用软件之间,它能使处于应用层中的各应用成分之间实现跨网络的协同工作(也就是互操作),这时允许各应用软件之下所涉及的“系统结构、操作系统、通信协议、数据库和其它应用服务”各不相同。,1.2 续,应用软件,中间件,网络协议,操作系统,硬件平台,应用软件,中间件,网络协议,操作系统,硬件平台,DBMS,两者内含有进行协同工作的应用成分,中间件定义,1.2 续,中间件组成1执行环境(Execution Environment)软件 如果一个网络的各个节点上安装了EE软件,各节点上的应用软件之间就可以实现相互合作。EE软件使各节点的下层设备对应用软件透明化了,EE软件是中间件中的主体部分。2应用开发(Application Development)工具AD工具用来帮助开发内含“透明动用对方”成分的应用软件,或改造原有的无透明动用能力的应用软件。AD工具是中间件中的必备部分。,1.2 续,中间件的层次结构,1.2续,中间件基本框架,1.2续,基于中间件的软件系统基本模型,1.2续,中间件工作原理,1.2 续,中间件的基本分类事务处理中间件(交易中间件,TPM)原子性 A 一致性 C隔离性 I 耐久性 D消息中间件(MOM)消息队列发布-预定分布式中间件,1.2续,中间件的发展情况,1.2续,中间件的主要厂商第一梯队Oracle(BEA)、IBM、东方通科技,占70%以上份额;第二梯队Sun、中软、中创、微软等;第三梯队国内若干中小软件企业和系统集成企业。,1.2 续,中间件的作用它提供了通道的功能,可保证应用系统数据的可靠传输;它起着桥梁的作用,达成异构应用资源之间的互联互通;它是分布式应用的集成开发框架,促成企业分布式应用的有机集成;作为平台,它可有效实现分布应用的分阶段顺利部署;它起着过滤网的作用,可有力保护关键信息的安全。,1.2 续,中间件的优越性:1.企业应用方面缩短应用开发周期减少项目开发风险应用程序质量可维护性增加产品吸引力,2.应用程序方面透明地同其他应用程序交互与运行平台提供的网络通信服务无关具有良好的可靠性和可用性具有良好的可扩展性,1.2 续,中间件发展面临的问题不同厂商的实现很难互操作只提供了一部分平台的实现应用开发者要面临设计选择过分追求中间件功能的全面性过分强调选择国外产品不能准确认识中间件的作用,1.2续,中间件技术发展趋势中间件的发展需要规范化应用需求导致技术格局多样化构件化和松散耦合底层的中间件持续走稳高层的中间件成为市场新宠新技术与产品的推出速度放缓实用化是重要的发展趋势,1.2 续,RPC背景在传统的编程概念中,过程是只能局限在本地运行的一段代码,主程序和过程之间的运行关系是本地调用关系本地过程调用LPC。LPC模式无法充分利用网络上其他主机的资源,也无法提高代码在实体间的共享程度,使得主机资源大量浪费。RPC是对LPC的扩展。通过这种调用机制,程序员编写客户方应用时,可根据需要透明地调用位于远端服务器上的过程。,1.3远程过程调用及其增强,main().调用A.退出,A().调用B.退出,B().退出,RPC调用模型,1.3 续,远程过程调用RPC概念RPC是从一台机器或一个进程调用另一台机器或另一个进程的服务或方法。远程过程调用是创建分布式应用的一种方法,来源于Unix操作系统的处理思想,被普遍认为是创建分布式应用的有效方法。从程序员的角度,RPC采用常规的编程模式:程序代码调用远端过程并将结果返回。当使用RPC时,只需编写很少的网络程序代码,绝大部分代码由IDL(Interface Define Language)生成。,1.3 续,IDL编译器结构,1.3 续,远程过程调用中间件工作机理用中间件中的IDL对调用顺序加以描述;利用IDL编译器对这种定义和描述进行编译,从而生成支持客户机和服务器进行通信的管道;在服务器端,被调用的远端过程需单独编写,并被置入服务器端框架,同时要在远程过程调用中间件中进行注册,以备调用。启动本地客户端存根存根捆绑远端过程名和参数利用网络传输到服务器端框架,从而实现数据格式的转换和参数的传递采用调用/返回模式具体地完成远端过程调用。,1.3 续,RPC工作流程,RPC一般采用调用/返回模式,多用于应用程序之间的通信,采用同步方式。RPC程序之间的同步通信一般采用Request-Wait-Reply方式,因此RPC更适应小型简单而不需要采用异步通信方式的应用。,1.3 续,RPC的通信模型,1.3 续,RPC执行过程,1.3 续,通信协议支持两种传输协议:TCP、UDPTCP:连接、可靠、低效。保证要么把调用传递到远程过程且接受应答,要么报告通信无法进行。UDP:无连接、不可靠、高效。使用UDP的远程过程调用也许会丢失或重复。,1.3 续,RPC的语义Last-of-many:被调用的过程可能执行若干次,但规定其最后一次执行的结果作为返回结果。At-most-once:若调用者收到了回复消息,则称被调用的过程正确地完成了它的一次(仅仅一次)执行。At-least-once:远程调用过程至少执行一次,回复消息可能返回一次或多次。Exactly-once:若服务器正常,则远程过程恰好执行一次,并返回一个调用结果。,1.3 续,远程过程调用的特点客户/服务器模式客户端的应用调用一个位于远端服务器平台的进程或服务,RPC实际上是通过C/S方式实现的。数据封装性远端过程调用负责捆绑参数,实现不同平台之间参数的传递,发送参数到远端过程。同步性当客户机发出请求时,服务器进程处于运行状态。复杂性远程调用的实现环境可能要用系统级的任务来创建,但一旦完成,对程序员就是透明的了。,1.3 续,远程过程调用的特点缺点:需要进行系统级的配置; RPC 并不支持对象。 CORBA的IIOP MTS的DCOM Java的 sockets应用级协议的编码交换 EJB?RMI (Java Remote Method Protocol)优点:方便地实现不同平台之间的数据转换。 XDR(eXternal Data Representation),1.3 续,RMI环境RMI(远程方法激活):在分布式程序中,其远程对象的方法能够被运行在不同主机上的其他Java虚拟机的方法调用。相对于过程调用级的RPC,RMI可以实现编程级对象之间的方法调用。,本地与远程方法调用,1.3 续,RMI体系结构,1.3 续,RMI系统的目标支持对存在于不同Java虚拟机上对象的无缝的远程调用。支持服务器对客户的回调。把分布式对象模型自然地集成到Java语言里。把分布式对象模型和本地Java对象模型间的不同表面化。使编写可靠的分布式应用程序简单化。保留Java运行时环境提供的安全性。,1.3 续,RMI的体系结构RMI体系结构有三层组成桩(也成为存根)/框架层(stub/skeleton)远程引用层(Remote Reference)传输层(Transport),1.3 续,RMI中的序列化对远程方法需要的参数和返回值,桩和框架负责把它们转化为字节流(即序列化),从而可以在网络上传送并可在另外一段重建(即逆序列化)。java.io.Serializable如需要是一个类被序列化,需要满足三个条件:实现Serializable接口。保证类有一个公共的、无参数的构造方法。保证类不包含对不可序列化对象的引用。,1.3 续,DCE的体系结构DCE包含一些线程、RPC、若干服务及应用。,1.4 分布式计算环境DCE,DCE的应用三个文件:界面定义文件、客户程序、服务器程序,1.4 续,DCE服务-基本服务线程服务RPC服务目录服务安全服务,1.4 续,DCE服务-扩展服务分布式文件服务时间服务,1.4 续,DCE问题RPC设计不周,开发工具薄弱。性能差、使用系统少、使用困难。1996年OSF与X/Open合并,1997年推出1.2.2已经太迟。DCE出现较早,因为没有采用面向对象技术。,1.4 续,Open Network ComputingONC核心协议:远程过程调用 RPC外部数据表示 XDR运输层接口 TLI分布式服务 NFS网络信息服务 NIS锁定管理器 LM远程执行服务 REX网盘 NETDISK自动装入器.,1.5 SUN的ONC,Thank you !,