分布对象技术
1
北京大学北京大学计算机系代亚非
2第九章 分布对象技术
9.1 分布对象技术要解决的基本问题
9.2 分布对象技术概论
9.3 分布对象的核心概念
9.4 分布对象主流技术介绍
9.5 分布对象处理技术 ---发展趋势
9.6 分布对象主流技术开发过程
39.1 分布对象技术要解决的基本问题
以下情况是不是分布式?
1、浏览
2、两个及其之间的通信
3、计算引擎
4
B机A机就是支持访问异地对象同一地址空间
C++编译器完成连接
C++Main
Program C++ Object
分布对象技术要解决的问题
9.1 分布对象技术要解决的基本问题
5
两层客户 /服务器模型 (胖客户 )
三层客户 /服务器模型 (瘦客户 )
N层客户 /服务器模型层的概念 (TIERS):在客户 /服务器意义上将,一个层就代表一个具有定义好的特定功能平台,一个平台就是就是一个计算机软件和硬件的组合,
.
,应用程序对象应用程序对象应用程序对象
9.1 分布对象技术要解决的基本问题分布式系统的客户 /服务器模型
69.1 分布对象技术要解决的基本问题一个分布式系统的例子 (原始的方法 )
电话订购客户 1
电话订购客户 2
电话订购客户 n
WEB
服务器 1
WEB
服务器 2
中心订购服务器
WEB
服务器 m
Internet
...,..
79.1 分布对象技术要解决的基本问题
使用多个服务器分割用户电话订购客户 1
WEB
服务器 1
Internet
电话订购客户 2
中心订购服务器 1
WEB
服务器 2
电话订购客户 1
WEB
服务器 1
电话订购客户 2
中心订购服务器 1
WEB
服务器 2
电话订购客户 1
WEB
服务器 1
电话订购客户 2
中心订购服务器 1
WEB
服务器 2
89.1 分布对象技术要解决的基本问题订购服务器 1
订购服务器 2
订购服务器 n
WEB
服务器 1
Internet
...
...调度程序考虑负载平衡的问题
99.1 分布对象技术要解决的基本问题问题案例一,如何综合越来越多的数据库资源,以适应不断发展的业务逻辑客户
Oracle
Sybase
Informix
如何加入综合多个数据库的业务逻辑?
如何集成其它非数据库操作的业务逻辑?
如何处理“肥客户”应用问题?
如何处理用户界面风格多样性?
109.1 分布对象技术要解决的基本问题
问题案例二 -- 如何管理不断接入的新应用管理器
N1 N2 Nk...
119.1 分布对象技术要解决的基本问题汇编语言单机应用开发环境 分布式应用开发环境
Socket API
Fortran语言
OOP语言软构件技术
RPC
分布对象技术
129.1 分布对象技术要解决的基本问题
我们都听到了哪些词汇?
构件模型
CORBA/IIOP
Java/RMI
分布对象
ActiveX Controls
RPC
COM/DCOM
还有还有 …...
EJB
139.2 分布对象技术概论
分布计算是近二十年来影响计算机急速发展的最活跃因素之一
经历了两种不同的技术路线
1,理想的技术路线 (80年代学术界普遍追求的目标 )
试图在互连的计算机硬件上部署全新的分布式操作系统
2,现实的技术路线
(90年代工业界普遍遵守的路线 )
在网络计算平台上部署分布计算环境提供开发工具和公共服务支持分布式应用资源共享和协同工作集中式客户 /服务器
149.2 分布对象技术概论
分布式系统比想象的要复杂,
1,异构环境下的应用互操作的问题
2,系统管理问题
3,系统安全的问题
4,传统的面向过程的技术在开发大型软件系统的局限性
面向对象技术用于分布式 (分布对象技术 )标志第二代分布式计算技术进入成熟和蓬勃发展时期,
分布式对象技术始于 90年代初,已经发展成为当今分布异构环境下建立应用系统集成框架和标准构件的核心技术
159.2 分布对象技术概论面向的主要问题 信息共享 智能化的协同工作异构环境下的信 息互操作体系结构 经典的客户 /服务器模型面向对象的多层客户服务器模型自主的多 agent模型关键技术的特点沿用传统的计算概念和设施 (如过程调用和文件设施 )
将面向对象技术应用到分布计算 面向 agent的拟人化交互环境成果能够提供丰富的分布式系统服务,良好的分布式系统管理和典型的分布系统应用已经成为建立集成构架和软构件标准的核心技术概念验证系统令人鼓舞,尚未达到广泛应用与协同工作的成熟程度第一代
(80年代中 ~90年代初 )
第三代
(从现在开始 )
第二代
(90年代 )
169.2 分布对象技术概论
分布对象技术的核心概念有那些?
1 分布对象的位置对客户透明
2 可以被远程客户应用以方法调用的形式访问
3 分布对象所使用的语言要对客户透明
4,分布对象运行的系统平台对客户透明
5,分布对象具有移动性
(允许时间,空间,语言,操作平台的差异性 )
179.2 分布对象技术概论一个应用逻辑
A机对象 对象对象对象
A机一个应用逻辑对象对象对象对象
D机
C机
B机
Java Java
VB
C++
VB
189.2 分布对象技术概论
分布式系统,分布对象与软构件是什么关系?
1,独立于特定程序设计语言和应用系统,可重用和自包含的软件成分称为软构件,
2,分布对象是一种典型的软构件
3,分布式系统是分散在两个或更多地方的计算机上为了实现一个共同的目标而共同工作的软件实体集合,
分布式应用系统中的成员,
1,创建和维护分布对象的实体的应用称为服务器
2,按照接口访问该对象的应用称为客户
3,服务对象同时可以是其它服务对象的客户
199.2 分布对象技术概论
软构件模型的开发的目的是什么?
重用,高层开发,通过工具进行自动化开发,简化开发过程等,
软构件模型的开发的手段是什么?
软构件开发者,
1.处理底层的实现细节以及与此相关的类,
2.定义构件的基本的体系结构,构件界面的结构,
与 其它构件及容器相互作用的机制软构件应用者,
在可视的开发环境将以存在的构件进行简单的组装。
209.2 分布对象技术概论
软构件模型的例子?
OMG的 CORBA,Microsoft的 COM/DCOM和 SUN的
Java/EJB。
21
C++Main
Program
Object AObject AObject A
Agent 1 Agent 2
网络计算环境
A的代理 对象适配器
ORB
9.3 分布对象技术 ----基本工作原理
什么是对象请求代理?
支持客户访问异地分布对象的核心机制称为对象请求代理 ORB(Object Request Broker)
A机一个应用逻辑对象对象对象对象
D机
C机
B机一个应用逻辑
A机对象 对象对象对象
229.3 分布对象技术 ----基本工作原理客户应用逻辑分布对象代理服务器对象请求分发器分布对象的实现对象请求适配器对象请求感知器网络传输访问

OR
B
服务器构造构架客户构造构架
相同的接口相同的接口

239.3 分布对象技术 ----基本工作原理
ORBORB
客户客户客户客户
O1
O2 Oracle
O3
O4 Sybase
O5
O6 Informix
O1R
O2R
O3R
O4R
O5R
O6R
虚拟图书馆查询预约服务还书通知通知 还 /借处理如何管理客户应用预约预约
24
利用这些服务创建一个新的对象而不必知道对象在哪
9.3 分布对象技术 ----基本工作原理
对象服务,支持分布式系统正常工作的各类基本的系统级服务
1.名字管理
2.事件通告
3,对象事务管理
4,对象生命周期应用对象对象服务通用功能对象请求代理 ( O b je c t R e q u e s t B r o k e r )
259.3 分布对象技术 ----基本工作原理
通用功能,支持分布式系统高效开发和有效工作的各类面向领域的常规服务和工具
GUI
数据库服务
电子邮件服务
系统管理服务
面象应用领域的领域构架应用对象对象服务通用功能对象请求代理 ( O b je c t R e q u e s t B r o k e r )
269.3 分布对象技术 ----基本工作原理
应用对象,涉及各种应用软件,它在对象服务和公共设施帮助下完成相应的应用逻辑
ORB是一条软总线,把分布式系统中各类对象和应用连接成相互作用的整体应用对象对象服务通用功能对象请求代理 ( O b je c t R e q u e s t B r o k e r )
279.4 分布对象主流技术
分布对象技术的实质性进步,
1,使面向对象技术能够在异构的网络环境中得以全面,彻底,方便的实施
2,有效地控制系统的开发,管理,维护的复杂性
分布对象的主流技术
1,OMG的 CORBA
2,Microsoft的 ActiveX/DCOM
3,SUN的 Java/RMI
289.4 分布对象主流技术 ---CORBA
OMG是一个非盈利性国际组织,致力于使
CORBA成为“无所不在的中间件”
1989年成立,当时仅有 8家成员,目前有 900家成员
OMG制定的分布对象计算标准规范,按照这些规范设计的开发的分布式计算软件环境可以在几乎所有的主流硬件平台和操作系统上运行
CORBA的通信协议是 IIOP(Internet Inter-
ORB Protocol).
CORBA结构集中围绕着两个主要元素,ORB和
IDL,CORBA的语言独立性和平台独立性主要来源于这两个方面,
CORBA
299.4 分布对象主流技术 ---CORBA
ORB负责定位服务器对象
IDL是建立接口的基础动态激活接口
I D L
S tu b s
O R B
接口静态 I D L
S k e le to n s
动态
S k e le to n
对象适配器
O R B 内核客户
( C li e n t)
对象实现
( S e r v e r )
309.4 分布对象主流技术 ---CORBA
IDL Stubs,IDL Skeleton是由 IDL 编译器编译产生的,用于静态调用,有较好的性能和效率。
动态调用接口和动态 Skeleton用于动态调用,使得即使在编译时不知道可用的服务器和接口消息,
也能完成客户与服务器的作用
CORBA中的说明语言,称作 OMGIDL,用以描述对象的 接口。它本身不是一个可编程语言,但它为程序员提供了语言的独立性,他们不必知道调用者所采用的语言。
IDL的词法,语法规则遵从 C++的规定,但加入了一些关键词支持分布概念。用接口描述语言
( Interface Description Language)编写的对象接口,使得与语言无关的独立性成为可能。
319.4 分布对象主流技术 ---CORBA
CORBA规范的特点,
1,互操作性,CORBA在客户和服务器之间提供了两层可操作性。一方面它将客户与服务器都抽象为对象,所有功能都封装在对象内部,对外提供简单的接口,可被其它对象以动态或静态方式调用。另一方面,对象间的通信是通过 ORB代理实现,对象不必关心细节,由 ORB定址发送请求。
是 ORB对象间的“通信总线”。
329.4 分布对象主流技术 ---CORBA
3.跨平台性:由于 CORBA规范中定义了 IDL语言这一与平台无关的语言,并引入代理 (ORB)概念,
因此 CORBA应用具有较好的跨平台性。
2,提供了软总件机制:所谓软总线是指 CORBA规范定义了一组接口规范,任何应用程序,软件系统或工具只要具有与该接口规范相符合的接口定义,就能方便地集成对 CORBA
系统中,而这个接口规范是独立于任何实现语言和环境。。
33
ORB
CLIENT
STUBS SKELETONS
SERVER
ORB
IIOP
METHOD REQUEST
OBJECT REFERENCE SERVANT
9.4 分布对象主流技术 ---CORBA
CORBA结构一次请求的过程
CORBA结构一次请求的过程
349.4 分布对象主流技术 ---COM/DCOM
OLE对象链接和嵌入 (Object Linking and
Embedding)
从用户角度看 OLE
1,OLE文档,以文档为中心,OLE集成数据
2,OLE自动化
3,OLE控件,可以被嵌入应用程序中的自包含的,
可重用的组件,
COM,DCOM,OLE和 ActiveX
359.4 分布对象主流技术 ---COM/DCOM
369.4 分布对象主流技术 ---COM/DCOM
37
组件对象模型 (COM)
结构化存储 跟踪器(永久命名 )
拖放 嵌入剪贴板一致数据传输器
(UDT)
就地激活
(可视编程 ) 链接 OLE自动化
OLE控件为将来而建造
9.4 分布对象主流技术 ---COM/DCOM
从程序员的角度看 OLE
OLE文档属性 事件
389.4 分布对象主流技术 ---COM/DCOM
构件对象模型 COM (Component Object
Model ) 是一个用于在交互平台上开发客户 /服务器应用程序开放结构,
COM是微软的构件对象模型,是构件之间实现互操作的二进制标准,
COM对象通过接口来显示功能。接口是 COM
对象与外部世界的一个绑定约定。
COM可以用不同语言实现,
COM只能运行在 WINDOWS平台上
COM实现了 OLE对象的底层通信,其作用类似于 CORBA/ORB
399.4 分布对象主流技术 ---COM/DCOM
ActiveX是 OLE技术和 COM技术在 Internet网上的一个扩展,但是它的内容更多,它还组成了一系列用来产生丰富的 Internet网和多媒体服务,
ActiveX文档:
将 OLE文档扩展到 internet,能够由浏览器打开的
word,powerpoint文件
ActiveX控件:
将 OLE控件扩展到 internet。如一个页面包含
ActiveX控件,该控件可以自动下载到用户端。
ActiveX脚本:
将 OLE自动化带进 internet。可以利用 VBScript,
JavaScriot,Perl,等语言编写。
409.4 分布对象主流技术 ---COM/DCOM
分布式组件对象模型 (DCOM或
ActiveX/DCOM):被称为网络 OLE,是二进制的
COM对象在局域,广域网和 Internet上的扩展,
COM能够使客户在本地处理中透明地访问库中的对象,DCOM允许在远程处理中透明地访问对象。
( DCOM的功能实现使得程序员不必编写网络代码,或仅仅知道如何编写网络代码)
DCOM基于 (RPC--- remote procedure call )工作,它不是一种编程语言,而是一种规范,一种服务,是一种高级网络协议。
DCOM是用 COM实现的。
419.4 分布对象主流技术 ---COM/DCOM
ActiveX控件通过底层 DCOM进行通信,允许控件互相访问对方公布了的方法,而不必考虑控件是否在一个容器或同一台机器上。
ActiveX控件由事件连接在一起,开发环境支持开发者创建方法,当任何一个构件出发了一个事件,
这些方法都被调用,
目前有十几家公司提供大量的控件,你可以访问这些公司的 WEB站点,下载你需要的 ActiveX控件,
进行编程,www.activex.com.
Windows98和 WindowsNT5.0都把 DCOM作为操作系统的一部分,
429.4 分布对象主流技术 ---Java/RMI
RMI是分布在网络中的各类 Java对象之间的进行方法调用的 ORB机制,
Java语言支持通信的最基本机制是 Socket,但是
Socket要求客户和服务器在应用程序级上对交换信息编码的协议达成一致,
RPC把通信接口抽象到子程序级,而不是直接与
Socket打交道,但由于不涉及对象,在分布式运算中效果不好,
Java/RMI(Remote Method Invocation)是 Java特有的分布式计算技术,它允许运行在一个 Java虚拟机上的对象调用运行在另一个 Java虚拟机上的对象的方法,
Java/RMI
439.4 分布对象主流技术 ---Java/RMI
RMI系统的一般结构
1,Stub就是代表远程对象的客户方代理,定义远程对象版本所支持的所有接口,
2,Skeletons是与服务器方的
RRL接口的服务器方构件
3,RRL负责维护不与具体 Stub
或 Skeleton模型相关的独立引用协议,这个灵活性使 RRL的改变不会影响另外两层,
4,传输层由 4个抽象构成,
端点,通道,连接,传送
Client Server
Remote Reference Layer
Stubs
Transport
Skeletons
Application
RMI System
449.4 分布对象主流技术 ---Java/RMI
RMI系统的一般原理,
1,定位远程对象,
RMI的命名工具注册远程对象,
2,和远程对象通信,
RMI传输层处理通信细节
3,装载被串对象的字节码,
RMI提供了传递数据和装载一个对象代码 的必要机制
Web Server Client
Server
Web Server registry
URL protocol
RMI
RMI
URL protocol
URL protocol
RMI
459.4 分布对象主流技术 ---EJB
EJB---(Enterprise JavaBean1.0)是 Java服务器端构件模型,
构件模型 通常有客户端构件和服务器端构件构件
客户端构件模型 JavaBean专门用于处理程序的表示及用户界面的问题,
服务器端构件模型
EJB,把构件模型的开发和中间件联系起来,面向事务处理的中间件提供基础设施,
Enterprise
JavaBean
容器 容器连接
EJB服务器客户
469.4 分布对象主流技术 ---EJB
为什么要有服务器端构件模型 EJB?
1,EJB将成为用 Java语言开发分布式的、面向对象的企业应用系统的标准构件体系结构,EJB使得通过组合构件得到分布式应用成为可能
2,EJB不需要应用开发人员了解底层的事务处理细节,状态管理,多线程,资源共享管理,以及其它底层
API细节,
3,EJB遵循 Java的,write once,run anywhere”
的原则,一个 EJB可以部署在任何 EJB平台上,
4,EJB定义了一个协议,使得不同供应商提供的构件能在运行时互操作,
5,EJB体系结构和已有的服务器平台,其它的 Java
APIs,CORBA兼容
479.4 分布对象主流技术 ---EJB
EJB与 JavaBean的关系
1,客户端的 JavaBeans容器可以根据 JavaBeans的属性,方法,事件的定义在设计时或运行时对 Java
Beans进行操作,一般 JavaBeans是可视化的构件,
一个标准的 JavaBeans是一个客户端构件,在运行时不能被其它客户机程序存取或操作
2,EJB没有用户界面,并完全位于服务器端,EJB可以由多个 JavaBeans组成,
3,EJB可以和远程的客户程序端通信,并提供一定的功能,如果不和客户端程序交互,EJB一般不执行具体的功能,
4,EJB与 JavaBeans的一个重要区别是 EJB提供了网络功能,
489.4 分布对象主流技术 ---EJB
EJB与 CORBA的关系
1,一个 CORBA客户机 (用 CORBA支持的语言些的程序 ),
可以存取基于 CORBA的 EJB服务器上的构件
2,一个客户机在一个事务过程中可以同时调用 CORBA的
EJB服务器对象
3,通过 IIOP可以使 EJB系统和 CORBA系统集成,
EJB与客户机的关系
对于 EJB来说,有两种类型的客户机可以使用 EJB:
1,EJB/CORBA客户机 ----一个使用 EJB APIs的
Java客户机,
2,纯 CORBA客户机 ----用 CORBA IDL支持的任何语言些的客户机,
49
EJB的网络计算
9.4 分布对象主流技术 ---EJB
客户端在网络计算环境中利用 Java的最好途径是由 EJB提供服务器端的构件,而由 JavaBeans提供客户端构件,
509.4 分布对象处理技术 ---几种构件模型的比较
组件,CORBA,JavaBean,ActiveX
协议,IIOP,RMI,DCOM
CORBA最大的特点是语言中性和跨平台,可以跨越不同网络,不同机器和不同操作系统,实现分布对象之间的互操作,整体功能最强,
Java提出了一个概念清晰,结构紧凑的分布计算模型和构件互操作方法,为构件应用开发提供了相当的灵活性,使用上比 CORBA方便,但是没有提供分布对象事物管理等服务,
微软结合 ActiveX/DCOM的开发,配套提出了自己的事务服务器 (MTS)和消息队列服务器,加之 asp
的使用,以及 wizard的可视化编程环境,倍受业界的欢迎,
519.4 分布对象处理技术 ---几种构件模型的比较
CORBA的优势在技术,较之 COM/DCOM领先至少 2-3年; COM/ DCOM的优势在市场能力。
目前,只有 OMG的技术能够支持大型异构分布式应用的开发,Microsoft的技术尚不能胜任。
CORBA技术与 Java技术趋于结合,CORBA的互操作性与 Java的可移植可移动性将使分布对象技术达到新的高度。
529.4 分布对象处理技术 ---几种构件模型的比较支持跨语言操作支持集成性跨平台操作网络通讯公共服务构件可用性事务处理消息服务安全服务目录服务容错性产品成熟性软件开发商的支持度可扩展性
CORBA/ORB ActiveX/DCOM EJB/RMI
A A D
ACA
A
A
A
E
A
A
C
C
B
A
B
D
C
B
B
C
C
B
A
B
A
A
B
B
A
B
C
D
A
A
539.5 分布对象处理技术 ---发展趋势
Object web 人们关注的新热点
hypertext web-->interactive web-->object
web
什么是 object Web?
CORBA和 Java结合是 object web的技术基础
和 hypertext web,interactive web比较,
1,object web给用户的突出感觉是操纵实体不再局限于含有“超链”的文档
2,作用于实体的操作行为不再局限于“下载”
一类的文件传输,
549.5 分布对象处理技术 ---发展趋势
Object web的体系结构
Java
ORB
Web browser
Java Applet
Java ORB
HTTP
JDBC
HTTP文档
Java AppletHTTP Server
CORBA
Server
Object
Internet第一层第二层 业务服务器
IIOP
第三层 业务服务器
CGI
559.5 分布对象处理技术 ---发展趋势
中间层可以由任何一种服务器来支持
中间层主要完成各种业务逻辑
569.5 分布对象处理技术 ---发展趋势
从应用的角度看 object web
(1) 开发的 internet/Intranet管理
– agent能够在 internet上公布其管理功能的接口,并接受任何合法的 maneger按照标准的运城对象访问协议
(corba//iiop)所进行的访问,
– Maneger能够访问任何时刻加入 Internet的 Agent,只要该 agent支持 internet上的标准的远程对象访问协议,
并在加入 internet时按照标准的协议公布其接口,
(2) Web文档组合
– 结合组合文档和 web文档的双重功能,
579.5 分布对象处理技术 ---发展趋势
从技术的角度看 object web
对象开发技术和对象访问技术对象 超文本
Object web
COM 对象 Java 对象
CORBA对象 各类构件
DCOM
RMI
CORBA/IIOP
HTTP/CGI
HTTP/CGI对象访问
Hypertext web
interactive web