• 1. 第九章 分布对象技术9.1 分布对象技术要解决的基本问题 9.2 分布对象技术概论 9.3 分布对象的核心概念 9.4 分布对象主流技术介绍 9.5 分布对象处理技术---发展趋势 9.6 分布对象主流技术开发过程 1
  • 2. 9.1 分布对象技术要解决的基本问题以下情况是不是分布式? 1、浏览 2、两个及其之间的通信 3、计算引擎 2
  • 3. ?B机A机就是支持访问异地对象同一地址空间C++编译器完成连接 C++Main ProgramC++ Object分布对象技术要解决的问题9.1 分布对象技术要解决的基本问题3
  • 4. N层客户/服务器模型层的概念(TIERS):在客户/服务器意义上将,一个层就代表一个具有定义好的特定功能平台,一个平台就是就是一个计算机软件和硬件的组合...应用程序对象应用程序对象应用程序对象9.1 分布对象技术要解决的基本问题分布式系统的客户/服务器模型 两层客户/服务器模型(胖客户) 三层客户/服务器模型(瘦客户)4
  • 5. 9.1 分布对象技术要解决的基本问题一个分布式系统的例子(原始的方法)电话订购 客户1电话订购 客户2电话订购 客户nWEB 服务器 1 WEB 服务器 2 中心订购 服务器WEB 服务器 m Internet......5
  • 6. 9.1 分布对象技术要解决的基本问题使用多个服务器分割用户电话订购 客户1WEB 服务器 1 Internet电话订购 客户2中心订购 服务器1WEB 服务器 2 电话订购 客户1WEB 服务器 1 电话订购 客户2中心订购 服务器1WEB 服务器 2 电话订购 客户1WEB 服务器 1 电话订购 客户2中心订购 服务器1WEB 服务器 2 6
  • 7. 9.1 分布对象技术要解决的基本问题订购 服务器1订购 服务器2 订购 服务器nWEB 服务器 1 Internet...... 调度程序 考虑负载平衡的问题7
  • 8. 9.1 分布对象技术要解决的基本问题问题案例一: 如何综合越来越多的数据库资源,以适应不断发展的业务逻辑客户OracleSybaseInformix如何加入综合多个数据库的业务逻辑?如何集成其它非数据库操作的业务逻辑?如何处理“肥客户”应用问题?如何处理用户界面风格多样性?8
  • 9. 9.1 分布对象技术要解决的基本问题问题案例二--如何管理不断接入的新应用管理器N1N2Nk...?9
  • 10. 9.1 分布对象技术要解决的基本问题汇编语言单机应用开发环境分布式应用开发环境Socket APIFortran语言OOP语言软构件技术RPC分布对象技术10
  • 11. 9.1 分布对象技术要解决的基本问题我们都听到了哪些词汇?构件模型CORBA/IIOPJava/RMI分布对象ActiveX ControlsRPCCOM/DCOM还有还有…...EJB11
  • 12. 9.2 分布对象技术概论分布计算是近二十年来影响计算机急速发展的最活跃因素之一 经历了两种不同的技术路线 1. 理想的技术路线(80年代学术界普遍追求的目标): 试图在互连的计算机硬件上部署全新的分布式操作系统 2. 现实的技术路线: (90年代工业界普遍遵守的路线) 在网络计算平台上部署分布计算环境,提供开发工具和公共服务 支持分布式应用资源共享和协同工作集中式客户/服务器12
  • 13. 9.2 分布对象技术概论分布式系统比想象的要复杂: 1. 异构环境下的应用互操作的问题 2. 系统管理问题 3. 系统安全的问题 4. 传统的面向过程的技术在开发大型软件系统的局限性 面向对象技术用于分布式(分布对象技术)标志第二代分布式计算技术进入成熟和蓬勃发展时期. 分布式对象技术始于90年代初,已经发展成为当今分布异构环境下建立应用系统集成框架和标准构件的核心技术13
  • 14. 9.2 分布对象技术概论面向的主要问题信息共享智能化的协同工作异构环境下的信息互操作体系结构经典的客户/服务器模型面向对象的多层客户服务器模型自主的多agent模型关键技术的特点沿用传统的计算概念和设施(如过程调用和文件设施)将面向对象技术应用到分布计算面向agent的拟人化交互环境成果能够提供丰富的分布式系统服务,良好的分布式系统管理和典型的分布系统应用已经成为建立集成构架和软构件标准的核心技术概念验证系统令人鼓舞,尚未达到广泛应用与协同工作的成熟程度第一代 (80年代中~90年代初)第三代 (从现在开始)第二代 (90年代)14
  • 15. 9.2 分布对象技术概论分布对象技术的核心概念有那些? 1 分布对象的位置对客户透明 2 可以被远程客户应用以方法调用的形式访问 3 分布对象所使用的语言要对客户透明 4. 分布对象运行的系统平台对客户透明 5. 分布对象具有移动性 (允许时间,空间,语言,操作平台的差异性)15
  • 16. 9.2 分布对象技术概论一个应用逻辑A机对象对象对象对象A机一个应用逻辑对象对象对象对象D机C机B机JavaJavaVBC++VB16
  • 17. 9.2 分布对象技术概论分布式系统, 分布对象与软构件是什么关系? 1. 独立于特定程序设计语言和应用系统,可重用和自包含的软件成分称为软构件. 2. 分布对象是一种典型的软构件 3. 分布式系统是分散在两个或更多地方的计算机上为了实现一个共同的目标而共同工作的软件实体集合. 分布式应用系统中的成员: 1. 创建和维护分布对象的实体的应用称为服务器 2. 按照接口访问该对象的应用称为客户 3. 服务对象同时可以是其它服务对象的客户17
  • 18. 9.2 分布对象技术概论软构件模型的开发的目的是什么? 重用,高层开发,通过工具进行自动化开发,简化开发过程等. 软构件模型的开发的手段是什么? 软构件开发者: 1.处理底层的实现细节以及与此相关的类. 2.定义构件的基本的体系结构,构件界面的结构,与其它构件及容器相互作用的机制 软构件应用者: 在可视的开发环境将以存在的构件进行简单的组装。18
  • 19. 9.2 分布对象技术概论软构件模型的例子? OMG的CORBA、Microsoft的COM/DCOM和SUN的Java/EJB。19
  • 20. C++Main ProgramObject AObject AObject AAgent 1Agent 2 网 络 计 算 环 境A的代理对象适配器9.3 分布对象技术----基本工作原理什么是对象请求代理? 支持客户访问异地分布对象的核心机制称为对象请求代理ORB(Object Request Broker) 20
  • 21. 9.3 分布对象技术----基本工作原理客户应用逻辑 分布对象 代理服务器对象请求分发器分布对象的实现对象请求适配器对象请求感知器网络传输访问ORB服务器构造构架客户构造构架相同的接口相同的接口21
  • 22. 9.3 分布对象技术----基本工作原理ORBORB客户客户客户客户O1O2OracleO3O4SybaseO5O6InformixO1RO2RO3RO4RO5RO6R虚拟 图书馆 查询预约服务还书通知通知还/借处理如何管理客户应用预约预约22
  • 23. 利用这些服务创建一个新的对象而不必知道对象在哪9.3 分布对象技术----基本工作原理对象服务:支持分布式系统正常工作的各类基本的系统级服务 1.名字管理 2.事件通告 3. 对象事务管理 4. 对象生命周期23
  • 24. 9.3 分布对象技术----基本工作原理通用功能:支持分布式系统高效开发和有效工作的各类面向领域的常规服务和工具 GUI 数据库服务 电子邮件服务 系统管理服务 面象应用领域的领域构架 24
  • 25. 9.3 分布对象技术----基本工作原理应用对象:涉及各种应用软件,它在对象服务和公共设施帮助下完成相应的应用逻辑 ORB是一条软总线,把分布式系统中各类对象和应用连接成相互作用的整体 25
  • 26. 9.4 分布对象主流技术分布对象技术的实质性进步: 1. 使面向对象技术能够在异构的网络环境中得以全面,彻底,方便的实施 2. 有效地控制系统的开发,管理,维护的复杂性 分布对象的主流技术 1. OMG的CORBA 2. Microsoft的ActiveX/DCOM 3. SUN的Java/RMI 26
  • 27. 9.4 分布对象主流技术---CORBAOMG是一个非盈利性国际组织,致力于使CORBA成为“无所不在的中间件” 1989年成立,当时仅有8家成员,目前有900家成员 OMG制定的分布对象计算标准规范,按照这些规范设计的开发的分布式计算软件环境可以在几乎所有的主流硬件平台和操作系统上运行 CORBA的通信协议是IIOP(Internet Inter-ORB Protocol). CORBA结构集中围绕着两个主要元素:ORB和IDL,CORBA的语言独立性和平台独立性主要来源于这两个方面. CORBA27
  • 28. 9.4 分布对象主流技术---CORBAORB负责定位服务器对象 IDL是建立接口的基础28
  • 29. 9.4 分布对象主流技术---CORBAIDL Stubs 、IDL Skeleton是由IDL 编译器编译产生的,用于静态调用,有较好的性能和效率。 动态调用接口和动态Skeleton用于动态调用,使得即使在编译时不知道可用的服务器和接口消息,也能完成客户与服务器的作用 CORBA中的说明语言,称作OMGIDL,用以描述对象的 接口。它本身不是一个可编程语言,但它为程序员提供了语言的独立性,他们不必知道调用者所采用的语言。 IDL的词法,语法规则遵从C++的规定,但加入了一些关键词支持分布概念。用接口描述语言(Interface Description Language)编写的对象接口,使得与语言无关的独立性成为可能。 29
  • 30. 9.4 分布对象主流技术---CORBACORBA规范的特点: 1. 互操作性:CORBA在客户和服务器之间提供了两层可操作性。一方面它将客户与服务器都抽象为对象,所有功能都封装在对象内部,对外提供简单的接口,可被其它对象以动态或静态方式调用。另一方面,对象间的通信是通过ORB代理实现,对象不必关心细节,由ORB定址发送请求。是ORB对象间的“通信总线”。30
  • 31. 9.4 分布对象主流技术---CORBA3.跨平台性:由于CORBA规范中定义了IDL语言这一与平台无关的语言,并引入代理(ORB)概念,因此CORBA应用具有较好的跨平台性。2. 提供了软总件机制:所谓软总线是指CORBA规范定义了一组接口规范,任何应用程序,软件系统或工具只要具有与该接口规范相符合的接口定义,就能方便地集成对CORBA系统中,而这个接口规范是独立于任何实现语言和环境。31
  • 32. ORBCLIENTSTUBSSKELETONSSERVERORBIIOPMETHOD REQUESTOBJECT REFERENCESERVANT9.4 分布对象主流技术---CORBACORBA结构一次请求的过程CORBA结构一次请求的过程32
  • 33. 9.4 分布对象主流技术---COM/DCOMOLE对象链接和嵌入(Object Linking and Embedding) 从用户角度看OLE 1. OLE文档:以文档为中心,OLE集成数据 2. OLE自动化 3. OLE控件:可以被嵌入应用程序中的自包含的, 可重用的组件.COM,DCOM,OLE和ActiveX33
  • 34. 9.4 分布对象主流技术---COM/DCOM34
  • 35. 9.4 分布对象主流技术---COM/DCOM35
  • 36. 组件对象模型(COM) 结构化存储 跟踪器 (永久命名)拖放嵌入剪贴板一致数据传输器(UDT)就地激活 (可视编程) 链接 OLE自动化OLE控件为 将 来 而 建 造9.4 分布对象主流技术---COM/DCOM从程序员的角度看OLE OLE文档属性事件36
  • 37. 9.4 分布对象主流技术---COM/DCOM构件对象模型COM (Component Object Model ) 是一个用于在交互平台上开发客户/服务器应用程序开放结构. COM是微软的构件对象模型,是构件之间实现互操作的二进制标准. COM对象通过接口来显示功能。接口是COM对象与外部世界的一个绑定约定。 COM可以用不同语言实现. COM只能运行在WINDOWS平台上 COM实现了OLE对象的底层通信,其作用类似于CORBA/ORB37
  • 38. 9.4 分布对象主流技术---COM/DCOMActiveX是OLE技术和COM技术在Internet网上的一个扩展.但是它的内容更多,它还组成了一系列用来产生丰富的Internet网和多媒体服务. ActiveX文档: 将OLE文档扩展到internet,能够由浏览器打开的word,powerpoint文件 ActiveX控件: 将OLE控件扩展到internet。如一个页面包含ActiveX控件,该控件可以自动下载到用户端。 ActiveX脚本: 将OLE自动化带进internet。可以利用VBScript,JavaScriot,Perl,等语言编写。38
  • 39. 9.4 分布对象主流技术---COM/DCOM分布式组件对象模型(DCOM或ActiveX/DCOM):被称为网络OLE,是二进制的COM对象在局域,广域网和Internet上的扩展. COM能够使客户在本地处理中透明地访问库中的对象,DCOM允许在远程处理中透明地访问对象。(DCOM的功能实现使得程序员不必编写网络代码,或仅仅知道如何编写网络代码) DCOM基于 (RPC--- remote procedure call )工作,它不是一种编程语言,而是一种规范,一种服务,是一种高级网络协议。 DCOM是用COM实现的。39
  • 40. 9.4 分布对象主流技术---COM/DCOMActiveX控件通过底层DCOM进行通信,允许控件互相访问对方公布了的方法,而不必考虑控件是否在一个容器或同一台机器上。 ActiveX控件由事件连接在一起, 开发环境支持开发者创建方法,当任何一个构件出发了一个事件,这些方法都被调用. 目前有十几家公司提供大量的控件,你可以访问这些公司的WEB站点,下载你需要的ActiveX控件,进行编程: www.activex.com. Windows98和WindowsNT5.0都把DCOM作为操作系统的一部分.40
  • 41. 9.4 分布对象主流技术---Java/RMIRMI是分布在网络中的各类Java对象之间的进行方法调用的ORB机制. Java语言支持通信的最基本机制是Socket. 但是Socket要求客户和服务器在应用程序级上对交换信息编码的协议达成一致. RPC把通信接口抽象到子程序级,而不是直接与 Socket打交道,但由于不涉及对象,在分布式运算中效果不好. Java/RMI(Remote Method Invocation)是Java特有的分布式计算技术,它允许运行在一个Java虚拟机上的对象调用运行在另一个Java虚拟机上的对象的方法.Java/RMI41
  • 42. 9.4 分布对象主流技术---Java/RMIRMI系统的一般结构 1. Stub就是代表远程对象的客户方代理,定义远程对象版本所支持的所有接口. 2. Skeletons是与服务器方的RRL接口的服务器方构件 3. RRL负责维护不与具体Stub或Skeleton模型相关的独立引用协议.这个灵活性使RRL的改变不会影响另外两层. 4. 传输层由4个抽象构成: 端点,通道,连接,传送ClientServerRemote Reference LayerStubsTransportSkeletonsApplicationRMI System42
  • 43. 9.4 分布对象主流技术---Java/RMIRMI系统的一般原理: 1. 定位远程对象: RMI的命名工具注册远程对象. 2. 和远程对象通信: RMI传输层处理通信细节 3. 装载被串对象的字节码: RMI提供了传递数据和 装载一个对象代码 的必要机制Web ServerClient Server Web ServerregistryURL protocolRMIRMIURL protocolURL protocolRMI43
  • 44. 9.4 分布对象主流技术---EJBEJB---(Enterprise JavaBean1.0)是Java服务器端构件模型. 构件模型通常有客户端构件和服务器端构件构件 客户端构件模型JavaBean专门用于处理程序的表示及用户界面的问题. 服务器端构件模型 EJB,把构件模型的 开发和中间件联系 起来,面向事务处理 的中间件提供基础 设施.Enterprise JavaBean容器容器连接EJB服务器客户44
  • 45. 9.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兼容45
  • 46. 9.4 分布对象主流技术---EJBEJB与JavaBean的关系 1. 客户端的JavaBeans容器可以根据JavaBeans的属性,方法,事件的定义在设计时或运行时对Java Beans进行操作. 一般JavaBeans是可视化的构件. 一个标准的JavaBeans是一个客户端构件,在运行时不能被其它客户机程序存取或操作 2. EJB没有用户界面,并完全位于服务器端,EJB可以由多个JavaBeans组成. 3. EJB可以和远程的客户程序端通信,并提供一定的功能. 如果不和客户端程序交互,EJB一般不执行具体的功能. 4. EJB与JavaBeans的一个重要区别是EJB提供了网络功能.46
  • 47. 9.4 分布对象主流技术---EJBEJB与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支持的任何语言些的客户机.47
  • 48. EJB的网络计算 9.4 分布对象主流技术---EJB客户端在网络计算环境中利用Java的最好途径是由EJB提供服务器端的构件,而由JavaBeans提供客户端构件.48
  • 49. 9.4 分布对象处理技术---几种构件模型的比较组件:CORBA,JavaBean,ActiveX 协议:IIOP, RMI, DCOM CORBA最大的特点是语言中性和跨平台.可以跨越不同网络,不同机器和不同操作系统,实现分布对象之间的互操作.整体功能最强. Java提出了一个概念清晰,结构紧凑的分布计算模型和构件互操作方法,为构件应用开发提供了相当的灵活性,使用上比CORBA方便.但是没有提供分布对象事物管理等服务. 微软结合ActiveX/DCOM的开发,配套提出了自己的事务服务器(MTS)和消息队列服务器,加之asp 的使用,以及wizard的可视化编程环境,倍受业界的欢迎.49
  • 50. 9.4 分布对象处理技术---几种构件模型的比较CORBA的优势在技术,较之COM/DCOM领先至少2-3年; COM/ DCOM的优势在市场能力。 目前,只有OMG的技术能够支持大型异构分布式应用的开发,Microsoft的技术尚不能胜任。 CORBA技术与Java技术趋于结合,CORBA的互操作性与Java的可移植可移动性将使分布对象技术达到新的高度。 50
  • 51. 9.4 分布对象处理技术---几种构件模型的比较支持跨语言操作支持集成性跨平台操作网络通讯公共服务构件可用性事务处理消息服务安全服务目录服务容错性产品成熟性软件开发商的支持度可扩展性CORBA/ORBActiveX/DCOMEJB/RMIAADACAAAAEAACCBABDCBBCCBABAAABBABCDAA51
  • 52. 9.5 分布对象处理技术---发展趋势Object web 人们关注的新热点 hypertext web-->interactive web-->object web 什么是object Web? CORBA和Java结合是object web的技术基础 和hypertext web,interactive web比较: 1. object web给用户的突出感觉是操纵实体不再局限于含有“超链”的文档 2. 作用于实体的操作行为不再局限于“下载”一类的文件传输. 52
  • 53. 9.5 分布对象处理技术---发展趋势Object web的体系结构Java ORBWeb browserJava AppletJava ORBHTTPJDBCHTTP文档Java AppletHTTP ServerCORBAServer ObjectInternet第一层第二层 业务服务器IIOP第三层 业务服务器CGI53
  • 54. 9.5 分布对象处理技术---发展趋势中间层可以由任何一种服务器来支持 中间层主要完成各种业务逻辑 54
  • 55. 9.5 分布对象处理技术---发展趋势从应用的角度看object web (1) 开发的internet/Intranet管理 agent能够在internet上公布其管理功能的接口,并接受任何合法的maneger按照标准的运城对象访问协议(corba//iiop)所进行的访问. Maneger能够访问任何时刻加入Internet的Agent,只要该agent支持internet上的标准的远程对象访问协议,并在加入internet时按照标准的协议公布其接口. (2) Web文档组合 结合组合文档和web文档的双重功能. 55
  • 56. 9.5 分布对象处理技术---发展趋势从技术的角度看object web 对象开发技术和对象访问技术对象超文本Object webCOM 对象Java 对象CORBA对象各类构件DCOMRMICORBA/IIOPHTTP/CGIHTTP/CGI对象访问Hypertext web interactive web56