1、山东大学计算机科学与技术学院基础技术教学部中间件技术中间件技术山东大学计算机科学与技术学院基础技术教学部发展路线发展路线主要技术介绍主要技术介绍山东大学计算机科学与技术学院基础技术教学部程序设计方法的发展程序设计方法的发展结构化程序设计结构化程序设计 以数据为中心以数据为中心面向对象程序设计面向对象程序设计 以对象为中心以对象为中心组件程序设计组件程序设计 以组件为中心以组件为中心综合使用山东大学计算机科学与技术学院基础技术教学部软件需求的变化软件需求的变化计算计算实用实用管理管理(MIS)分布式系统分布式系统山东大学计算机科学与技术学院基础技术教学部软件环境的变化软件环境的变化单任务单任务多
2、任务多任务文字界面文字界面图形界面图形界面单线程单线程多线程多线程平台相关平台相关跨平台跨平台单机单机(本地本地)网络网络(分布式分布式)单一语言单一语言多种语言多种语言山东大学计算机科学与技术学院基础技术教学部发展路线发展路线面向过程语言crpc面向对象语言javarmi组件Web service中间件技术分布式技术山东大学计算机科学与技术学院基础技术教学部分布式技术分布式技术分布式就是把整个网络作为一台大型计算机,在不同的地方分布式就是把整个网络作为一台大型计算机,在不同的地方做不同的工作做不同的工作 分布式软件系统分布式软件系统(Distributed Software Systems)
3、是支持分布式是支持分布式处理的软件系统处理的软件系统,是在由通信网络互联的多处理机体系结构上是在由通信网络互联的多处理机体系结构上执行任务的系统。它包括分布式操作系统、分布式程序设计执行任务的系统。它包括分布式操作系统、分布式程序设计语言及其编译语言及其编译(解释解释)系统、分布式文件系统和分布式数据库系统、分布式文件系统和分布式数据库系统等系统等分布式计算是一门计算机科学,它研究如何把一个需要非常分布式计算是一门计算机科学,它研究如何把一个需要非常巨大的计算能力才能解决的问题分成许多小的部分,然后把巨大的计算能力才能解决的问题分成许多小的部分,然后把这些部分分配给许多计算机进行处理,最后把这
4、些计算结果这些部分分配给许多计算机进行处理,最后把这些计算结果综合起来得到最终的结果综合起来得到最终的结果 山东大学计算机科学与技术学院基础技术教学部分布式计算是近年提出的一种新的计算方式。所谓分布式计分布式计算是近年提出的一种新的计算方式。所谓分布式计算就是在两个或多个软件互相共享信息,这些软件既可以在算就是在两个或多个软件互相共享信息,这些软件既可以在同一台计算机上运行,也可以在通过网络连接起来的多台计同一台计算机上运行,也可以在通过网络连接起来的多台计算机上运行。分布式计算比起其它算法具有以下几个优点:算机上运行。分布式计算比起其它算法具有以下几个优点:1、稀有资源可以共享,、稀有资源可
5、以共享,2、通过分布式计算可以在多台计算机上平衡计算负载,、通过分布式计算可以在多台计算机上平衡计算负载,3、可以把程序放在最适合运行它的计算机上,、可以把程序放在最适合运行它的计算机上,其中,共享稀有资源和平衡负载是计算机分布式计算的核心其中,共享稀有资源和平衡负载是计算机分布式计算的核心思想之一。思想之一。山东大学计算机科学与技术学院基础技术教学部概念:类、对象概念:类、对象类是定义,它封装了状态和操作类是定义,它封装了状态和操作对象是实例,它反映了具体的事物对象是实例,它反映了具体的事物对象由类来定义对象由类来定义一个对象可以与多个具有继承关系的类相联系一个对象可以与多个具有继承关系的类
6、相联系山东大学计算机科学与技术学院基础技术教学部概念:组件概念:组件定义:可独立发布的二进制单元定义:可独立发布的二进制单元有的地方称作有的地方称作“package”比喻:零件比喻:零件容易混淆:容易混淆:服务器服务器(server)、对象、对象例如:例如:COM组件、组件、Java Applet山东大学计算机科学与技术学院基础技术教学部COM:组件:组件COM对象的载体对象的载体 包含多个包含多个COM对象对象进程内组件进程内组件 DLL Export Entrys进程外组件进程外组件 IPC:RPC/LPC山东大学计算机科学与技术学院基础技术教学部中间件中间件中间件中间件(Middlewa
7、re)是一类软件,处于系统软件(操是一类软件,处于系统软件(操作系统和网络软件)与应用软件之间,它能使应用作系统和网络软件)与应用软件之间,它能使应用软件之间进行跨网络的协同工作(也就是互操作),软件之间进行跨网络的协同工作(也就是互操作),这时允许各应用软件之下所涉及的这时允许各应用软件之下所涉及的“系统结构、操系统结构、操作系统、通信协议、数据库和其它应用服务作系统、通信协议、数据库和其它应用服务”各不各不相同相同 中间件是一类软件,而非一种软件;中间件是一类软件,而非一种软件;中间件不仅仅实现互连,还要实现应用之间的互操作;中间件不仅仅实现互连,还要实现应用之间的互操作;中间件是基于分布
8、式处理的软件,最突出的特点是其网络通信功能。中间件是基于分布式处理的软件,最突出的特点是其网络通信功能。山东大学计算机科学与技术学院基础技术教学部现代应用系统的基本特征现代应用系统的基本特征分布分布 任务已不只是在单机上运行,而是由网络中多台计任务已不只是在单机上运行,而是由网络中多台计算机上的相关应用共同协作完成,需考虑网络传输、数据安全、算机上的相关应用共同协作完成,需考虑网络传输、数据安全、数据一致性、同步等诸多问题;数据一致性、同步等诸多问题;异构异构 计算机硬件、操作系统、网络协议、数据库系统计算机硬件、操作系统、网络协议、数据库系统以及开发工具种类繁多,需考虑数据表示、调用接口、处
9、理方以及开发工具种类繁多,需考虑数据表示、调用接口、处理方式等诸多问题;式等诸多问题;动态协作动态协作 参与协作的应用允许位置透明性、迁移参与协作的应用允许位置透明性、迁移透明性、负载平衡性等需求。透明性、负载平衡性等需求。山东大学计算机科学与技术学院基础技术教学部问题问题分布异构环境中,通常存在:分布异构环境中,通常存在:多种硬件系统平台,多种硬件系统平台,各种各样的系统软件,各种各样的系统软件,多种风格各异的用户界面,多种风格各异的用户界面,不同的网络协议和网络体系结构连接。不同的网络协议和网络体系结构连接。山东大学计算机科学与技术学院基础技术教学部山东大学计算机科学与技术学院基础技术教学
10、部1.1山东大学计算机科学与技术学院基础技术教学部中间件的特性中间件的特性易用性易用性位置透明性:应用不必知道对方网络和应用的地址;不经重位置透明性:应用不必知道对方网络和应用的地址;不经重新编译,就可把一个应用从一台机器上转移到另一台机器新编译,就可把一个应用从一台机器上转移到另一台机器消息传输的完整性:消息不应丢失或重复消息传输的完整性:消息不应丢失或重复消息格式的完整性:消息格式不应被破坏消息格式的完整性:消息格式不应被破坏语言透明性:使用中间件的程序应能与另一个用不同语言编语言透明性:使用中间件的程序应能与另一个用不同语言编写的程序通信;如果用不同语言重写一个程序,其他程序应写的程序通
11、信;如果用不同语言重写一个程序,其他程序应不受影响不受影响山东大学计算机科学与技术学院基础技术教学部中间件中要解决的问题中间件中要解决的问题互操作问题(通信)互操作问题(通信)提供一个基本的环境(基础服务)提供一个基本的环境(基础服务)山东大学计算机科学与技术学院基础技术教学部互操作问题互操作问题Stub,skeleton注册注册山东大学计算机科学与技术学院基础技术教学部C语言中函数函数调用语言中函数函数调用f(int a2,int b2)int x,y,z;return(z)main()int a1,b1,c;c=f(a1,b1);a2b2xya1b1102102z30c30山东大学计算机科
12、学与技术学院基础技术教学部Java中的调用中的调用public class PassParameter static void showMe(int pi,Object po)System.out.println(pi=+pi+;po=+po);/Step 2(示意图:3-2-2)pi+;po=newObject();System.out.println(pi=+pi+;po=+po);/Step 3(示意图:3-2-3)public static void main(String args)int i=1;Objecto=newObject();System.out.println(i=+i
13、+;o=+o);/Step 1(示意图:3-1-1)showMe(i,o);System.out.println(i=+i+;o=+o);/Step 4(示意图:3-2-3)山东大学计算机科学与技术学院基础技术教学部int i=1;Objecto=newObject();System.out.println(i=+i+;o=+o);/Step 1(示意图:3-1-1)山东大学计算机科学与技术学院基础技术教学部static void showMe(int pi,Object po)System.out.println(pi=+pi+;po=+po);/Step 2(示意图:3-2-2山东大学计算
14、机科学与技术学院基础技术教学部 po=newObject();System.out.println(“pi=”+pi+“;po=”+po);/Step 3(示意图:3-2-3)System.out.println(i=+i+;o=+o);/Step 4(示意图:3-2-3)山东大学计算机科学与技术学院基础技术教学部Rpc的调用的调用从一个程序片调用另一个程序片的过程称为远程过从一个程序片调用另一个程序片的过程称为远程过程调用,即程调用,即RPC。RPC是一个是一个Client/Server模型,调用程序片(本地模型,调用程序片(本地程序)称为程序)称为rpc client,被调用程序片(远程程
15、序),被调用程序片(远程程序)称为称为rpc server。山东大学计算机科学与技术学院基础技术教学部RPC调用模型main().调用调用A.退出退出主程序A().调用B.退出过程A代码B().退出过程B代码机器1机器2机器3山东大学计算机科学与技术学院基础技术教学部rmi在分布式程序中,远程对象的方法能被运行在不同在分布式程序中,远程对象的方法能被运行在不同主机上的其他主机上的其他java虚拟机的方法调用虚拟机的方法调用类似于类似于rpc山东大学计算机科学与技术学院基础技术教学部山东大学计算机科学与技术学院基础技术教学部远程对象:远程对象:方法能被不同宿主机上的方法能被不同宿主机上的Java
16、Java虚拟机调用的对象。虚拟机调用的对象。远程接口:一个声明远程对象的方法的接口远程接口:一个声明远程对象的方法的接口。远程服务器:创建远程对象的实例远程服务器:创建远程对象的实例客户端:使用远程对象客户端:使用远程对象基本概念基本概念山东大学计算机科学与技术学院基础技术教学部l 存在于客户端存在于客户端l 远程对象的本地映象:调用远程对象时,实际调用的是桩对远程对象的本地映象:调用远程对象时,实际调用的是桩对象上的方法象上的方法l 负责负责初始化并与远程对象所在的远程VM连接将参数打包,传递到远程VM等待方法调用的结果解包返回值和异常将值返回给调用者Stub(存根(存根/桩)桩)山东大学计
17、算机科学与技术学院基础技术教学部框架框架存在于服务器存在于服务器接收客户桩的请求接收客户桩的请求和真正的远程对象进行交互和真正的远程对象进行交互传送服务器响应到客户传送服务器响应到客户负责负责 解包客户端输入的远程方法的参数解包客户端输入的远程方法的参数 调用实际的远程对象的方法调用实际的远程对象的方法 将结果打包返回给调用者将结果打包返回给调用者 传至远程引用层传至远程引用层山东大学计算机科学与技术学院基础技术教学部RMI 系统体系结构系统体系结构Client Virtual MachineClientServer Virtual MachineStubRemote ObjectSkelet
18、onRegistry Virtual Machine“Fred”Server山东大学计算机科学与技术学院基础技术教学部RMI 流程流程(1)Client Virtual MachineClientServer Virtual MachineStubRemote ObjectSkeletonRegistry Virtual Machine“Fred”Server121.Server Creates Remote Object2.Server Registers Remote Object山东大学计算机科学与技术学院基础技术教学部RMI 流程流程(2)Client Virtual MachineC
19、lientServer Virtual MachineStubRemote ObjectSkeletonRegistry Virtual Machine“Fred”Server43.Client requests object from Registry4.Registry returns remote reference(and stub gets created)3山东大学计算机科学与技术学院基础技术教学部RMI 流程流程(3)Client Virtual MachineClientServer Virtual MachineStubRemote ObjectSkeletonRegistr
20、y Virtual Machine“Fred”Server65.Client invokes stub method6.Stub talks to skeleton7.Skeleton invokes remote object method57山东大学计算机科学与技术学院基础技术教学部CORBA 客 户 服 务 器 ORB 核 心(GIOP/IIOP)动态调用 IDL存根 ORB 界面 静态IDL框架 动态框架调用 对象 适配 器 所有 ORB 实现都一致的界面 可能有多个对象适配器 依赖 ORB 核心的界面 与每个对象对应的存根或框架 向上调用界面 向下调用界面 界 面 仓 库 对象实 现
21、仓库 山东大学计算机科学与技术学院基础技术教学部客户程序与对象实现之间的界面客户程序与对象实现之间的界面(interface)是对象的接口定义,是对象的接口定义,对象接口是服务双方共同订立的合约对象接口是服务双方共同订立的合约对象实现可以采用多种方式实现:独立服务程序,一个程序对象实现可以采用多种方式实现:独立服务程序,一个程序库,被包装的非面向对象应用程序等库,被包装的非面向对象应用程序等对象接口是对象结构与行为的外部可见的规格说明,用对象接口是对象结构与行为的外部可见的规格说明,用IDL描述描述对象实现提供对象内部的具体数据表示与可执行代码,同一接口对象实现提供对象内部的具体数据表示与可执
22、行代码,同一接口的实现可采用不同语言编写的实现可采用不同语言编写所有接口均未规定组件的具体实现,为开发的实现活动留下自由所有接口均未规定组件的具体实现,为开发的实现活动留下自由山东大学计算机科学与技术学院基础技术教学部corba静态工作方式静态工作方式客户对象实现IDL stubs客户方代理Static IDL skeleton服务方代理ORB内核对象适配器OAORB内核山东大学计算机科学与技术学院基础技术教学部基础服务基础服务定位定位消息消息安全安全事件事件事务事务数据数据山东大学计算机科学与技术学院基础技术教学部Web Service的概念的概念提供一个与操作系统无关、与程序设计语言无关、
23、与机器类提供一个与操作系统无关、与程序设计语言无关、与机器类型无关、与运行环境无关的平台,实现网络上应用的共享型无关、与运行环境无关的平台,实现网络上应用的共享A Service is a piece of software that is not tightly coupled with Client applications.Services are dynamically discoverable and composable entitiesWeb服务的体系结构与服务的体系结构与Web应用的应用的N层结构类似,区别在于层结构类似,区别在于顶层的面向浏览器的顶层的面向浏览器的Web Se
24、rver被面向程序的(被面向程序的(Web Service Client)的)的Web服务所取代。服务所取代。山东大学计算机科学与技术学院基础技术教学部Web Service特点特点Web 服务是用标准的、规范的服务是用标准的、规范的 XML 概念描述一些操作的接概念描述一些操作的接口(利用标准化的口(利用标准化的 XML 消息传递机制可以通过网络访问这消息传递机制可以通过网络访问这些操作)些操作)该接口该接口隐藏了实现服务的细节隐藏了实现服务的细节,允许,允许独立于独立于实现服务所基于实现服务所基于的的硬件或软件平台硬件或软件平台和编写服务所用的编程和编写服务所用的编程语言语言使用服务。使用
25、服务。Web 服务履行一项特定的任务或一组任务。服务履行一项特定的任务或一组任务。Web 服务可以单独或同其它服务可以单独或同其它 Web 服务一起用于实现复杂的服务一起用于实现复杂的聚集或商业交易聚集或商业交易山东大学计算机科学与技术学院基础技术教学部部署在部署在Web上的对象上的对象对象界面描述对象界面描述:WSDL对象访问对象访问:SOAP对象界面发现对象界面发现:UDDI对象实现对象实现:EJB,COM+,CORBA以及任何可用于对象实以及任何可用于对象实现的技术现的技术UDDIWSDLSOAPEJB/COM+/CORBA山东大学计算机科学与技术学院基础技术教学部Web Service架构架构ServiceProviderServiceBrokerServiceRequesterFindBind/InvokePublishSOA模型模型