1 / 57

北京大学计算机系 代亚非

北京大学. 分布对象技术. 北京大学计算机系 代亚非. 1. 第九章 分布对象技术. 9.1 分布对象技术要解决的基本问题 9.2 分布对象技术概论 9.3 分布对象的核心概念 9.4 分布对象主流技术介绍 9.5 分布对象处理技术 --- 发展趋势 9.6 分布对象主流技术开发过程. 9.1 分布对象技术要解决的基本问题. 以下情况是不是分布式? 1 、浏览 2 、两个及其之间的通信 3 、计算引擎. 分布对象技术要解决的问题. C++ 编译器完成连接. C++Main Program. C++ Object. ?. A 机.

abel-oliver
Download Presentation

北京大学计算机系 代亚非

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 北京大学 分布对象技术 北京大学计算机系 代亚非 1

  2. 第九章 分布对象技术 • 9.1 分布对象技术要解决的基本问题 • 9.2 分布对象技术概论 • 9.3 分布对象的核心概念 • 9.4 分布对象主流技术介绍 • 9.5 分布对象处理技术---发展趋势 • 9.6 分布对象主流技术开发过程

  3. 9.1 分布对象技术要解决的基本问题 • 以下情况是不是分布式? • 1、浏览 • 2、两个及其之间的通信 • 3、计算引擎

  4. 分布对象技术要解决的问题 C++编译器完成连接 C++Main Program C++ Object ? A机 B机 同一地址空间 9.1 分布对象技术要解决的基本问题 就是支持访问异地对象

  5. . . 应用程序对象 应用程序对象 应用程序对象 9.1 分布对象技术要解决的基本问题 分布式系统的客户/服务器模型 两层客户/服务器模型(胖客户) 层的概念(TIERS):在客户/服务器意义上将,一个层就代表一个具有定义好的特定功能平台,一个平台就是就是一个计算机软件和硬件的组合. 三层客户/服务器模型(瘦客户) N层客户/服务器模型

  6. WEB 服务器 1 电话订购 客户1 WEB 服务器 2 电话订购 客户2 中心订购 服务器 Internet ... ... 电话订购 客户n WEB 服务器 m 9.1 分布对象技术要解决的基本问题 一个分布式系统的例子(原始的方法)

  7. Internet 9.1 分布对象技术要解决的基本问题 • 使用多个服务器分割用户 电话订购 客户1 WEB 服务器 1 中心订购 服务器1 电话订购 客户2 WEB 服务器 2 电话订购 客户1 WEB 服务器 1 中心订购 服务器1 电话订购 客户2 WEB 服务器 2 电话订购 客户1 WEB 服务器 1 中心订购 服务器1 电话订购 客户2 WEB 服务器 2

  8. 订购 服务器1 调度程序 Internet ... 订购 服务器2 WEB 服务器 1 ... 订购 服务器n 9.1 分布对象技术要解决的基本问题 考虑负载平衡的问题

  9. Oracle Sybase Informix 9.1 分布对象技术要解决的基本问题 问题案例一:如何综合越来越多的数据库资源,以适应不断发展的业务逻辑 如何处理用户界面风格多样性? 如何处理“肥客户”应用问题? 如何加入综合多个数据库的业务逻辑? 如何集成其它非数据库操作的业务逻辑? 客户

  10. 9.1 分布对象技术要解决的基本问题 • 问题案例二--如何管理不断接入的新应用 ... N1 N2 Nk 管理器

  11. Fortran语言 RPC OOP语言 分布对象技术 软构件技术 9.1 分布对象技术要解决的基本问题 单机应用开发环境 分布式应用开发环境 汇编语言 Socket API

  12. 9.1 分布对象技术要解决的基本问题 • 我们都听到了哪些词汇? ActiveX Controls CORBA/IIOP RPC COM/DCOM 构件模型 Java/RMI 分布对象 EJB 还有还有…...

  13. 9.2 分布对象技术概论 • 分布计算是近二十年来影响计算机急速发展的最活跃因素之一 • 经历了两种不同的技术路线 1. 理想的技术路线(80年代学术界普遍追求的目标) 试图在互连的计算机硬件上部署全新的分布式操 作系统 2. 现实的技术路线 (90年代工业界普遍遵守的路线) 在网络计算平台上部署分布计算环境 提供开发工具和公共服务 支持分布式应用 资源共享和协同工作 集中式 客户/服务器

  14. 9.2 分布对象技术概论 • 分布式系统比想象的要复杂: 1. 异构环境下的应用互操作的问题 2. 系统管理问题 3. 系统安全的问题 4. 传统的面向过程的技术在开发大型软件系统的局限性 • 面向对象技术用于分布式(分布对象技术)标志第二代分布式计算技术进入成熟和蓬勃发展时期. • 分布式对象技术始于90年代初,已经发展成为当今分布异构环境下建立应用系统集成框架和标准构件的核心技术

  15. 第一代 (80年代中~90年代初) 第二代 (90年代) 第三代 (从现在开始) 异构环境下的信息互操作 面向的主要问题 信息共享 智能化的协同工作 面向对象的多层客户服务器模型 经典的客户/服务器模型 自主的多agent模型 体系结构 沿用传统的计算概念和设施(如过程调用和文件设施) 将面向对象技术应用到分布计算 面向agent的拟人化交互环境 关键技术的特点 概念验证系统令人鼓舞,尚未达到广泛应用与协同工作的成熟程度 能够提供丰富的分布式系统服务,良好的分布式系统管理和典型的分布系统应用 已经成为建立集成构架和软构件标准的核心技术 成果 9.2 分布对象技术概论

  16. 9.2 分布对象技术概论 • 分布对象技术的核心概念有那些? 1 分布对象的位置对客户透明 2 可以被远程客户应用以方法调用的形式访问 3 分布对象所使用的语言要对客户透明 4. 分布对象运行的系统平台对客户透明 5. 分布对象具有移动性 (允许时间,空间,语言,操作平台的差异性)

  17. 一个应用逻辑 对象 B机 对象 对象 对象 对象 A机 一个应用逻辑 对象 C机 对象 A机 对象 D机 9.2 分布对象技术概论 C++ VB VB Java Java

  18. 9.2 分布对象技术概论 • 分布式系统, 分布对象与软构件是什么关系? 1. 独立于特定程序设计语言和应用系统,可重用和自包含的软件成分称为软构件. 2. 分布对象是一种典型的软构件 3. 分布式系统是分散在两个或更多地方的计算机上为了实现一个共同的目标而共同工作的软件实体集合. • 分布式应用系统中的成员: 1. 创建和维护分布对象的实体的应用称为服务器 2. 按照接口访问该对象的应用称为客户 3. 服务对象同时可以是其它服务对象的客户

  19. 9.2 分布对象技术概论 • 软构件模型的开发的目的是什么? 重用,高层开发,通过工具进行自动化开发,简化开发过程等. • 软构件模型的开发的手段是什么? 软构件开发者: 1.处理底层的实现细节以及与此相关的类. 2.定义构件的基本的体系结构,构件界面的结构,与 其它构件及容器相互作用的机制 软构件应用者: 在可视的开发环境将以存在的构件进行简单的组装。

  20. 9.2 分布对象技术概论 • 软构件模型的例子? • OMG的CORBA、Microsoft的COM/DCOM和SUN的Java/EJB。

  21. 一个应用逻辑 对象 B机 对象 对象 对象 对象 Object A 对象适配器 Object A C++Main Program Object A A机 A的代理 一个应用逻辑 对象 C机 Agent 1 对象 Agent 2 A机 ORB 对象 D机 9.3 分布对象技术----基本工作原理 • 什么是对象请求代理? • 支持客户访问异地分布对象的核心机制称为对象请求代理ORB(Object Request Broker) 网 络 计 算 环 境

  22. 相同的接口 相同的接口          9.3 分布对象技术----基本工作原理 客户 服务器 服务器构造构架 客户构造构架 应用逻辑 分布对象的实现  分布对象 代理 对象请求分发器 ORB 对象请求适配器 对象请求感知器 网络传输访问

  23. O1 Oracle O2 通知 预约 O1R 查询 O3 O2R Sybase 虚拟 图书馆 O3R O4 O4R O5R 还书 预约服务 O6R O5 通知 还/借处理 预约 Informix O6 9.3 分布对象技术----基本工作原理 如何管理客户应用 ORB ORB 客户 客户 客户 客户

  24. 9.3 分布对象技术----基本工作原理 • 对象服务:支持分布式系统正常工作的各类基本的系统级服务 1.名字管理 2.事件通告 3. 对象事务管理 4. 对象生命周期 利用这些服务创建一个新的对象而不必知道对象在哪

  25. 9.3 分布对象技术----基本工作原理 • 通用功能:支持分布式系统高效开发和有效工作的各类面向领域的常规服务和工具 • GUI • 数据库服务 • 电子邮件服务 • 系统管理服务 • 面象应用领域的领域构架

  26. 9.3 分布对象技术----基本工作原理 • 应用对象:涉及各种应用软件,它在对象服务和公共设施帮助下完成相应的应用逻辑 • ORB是一条软总线,把分布式系统中各类对象和应用连接成相互作用的整体

  27. 9.4 分布对象主流技术 • 分布对象技术的实质性进步: 1. 使面向对象技术能够在异构的网络环境中得以全面,彻底,方便的实施 2. 有效地控制系统的开发,管理,维护的复杂性 • 分布对象的主流技术 1. OMG的CORBA 2. Microsoft的ActiveX/DCOM 3. SUN的Java/RMI

  28. 9.4 分布对象主流技术---CORBA CORBA • OMG是一个非盈利性国际组织,致力于使CORBA成为“无所不在的中间件” • 1989年成立,当时仅有8家成员,目前有900家成员 • OMG制定的分布对象计算标准规范,按照这些规范设计的开发的分布式计算软件环境可以在几乎所有的主流硬件平台和操作系统上运行 • CORBA的通信协议是IIOP(Internet Inter-ORB Protocol). • CORBA结构集中围绕着两个主要元素:ORB和IDL,CORBA的语言独立性和平台独立性主要来源于这两个方面.

  29. 9.4 分布对象主流技术---CORBA • ORB负责定位服务器对象 • IDL是建立接口的基础

  30. 9.4 分布对象主流技术---CORBA • IDL Stubs 、IDL Skeleton是由IDL 编译器编译产生的,用于静态调用,有较好的性能和效率。 • 动态调用接口和动态Skeleton用于动态调用,使得即使在编译时不知道可用的服务器和接口消息,也能完成客户与服务器的作用 • CORBA中的说明语言,称作OMGIDL,用以描述对象的 接口。它本身不是一个可编程语言,但它为程序员提供了语言的独立性,他们不必知道调用者所采用的语言。 • IDL的词法,语法规则遵从C++的规定,但加入了一些关键词支持分布概念。用接口描述语言(Interface Description Language)编写的对象接口,使得与语言无关的独立性成为可能。

  31. 9.4 分布对象主流技术---CORBA • CORBA规范的特点: 1. 互操作性:CORBA在客户和服务器之间提供了两层可操作性。一方面它将客户与服务器都抽象为对象,所有功能都封装在对象内部,对外提供简单的接口,可被其它对象以动态或静态方式调用。另一方面,对象间的通信是通过ORB代理实现,对象不必关心细节,由ORB定址发送请求。是ORB对象间的“通信总线”。

  32. 9.4 分布对象主流技术---CORBA 2. 提供了软总件机制:所谓软总线是指CORBA规范定义了一组接口规范,任何应用程序,软件系统或工具只要具有与该接口规范相符合的接口定义,就能方便地集成对CORBA系统中,而这个接口规范是独立于任何实现语言和环境。。 3.跨平台性:由于CORBA规范中定义了IDL语言这一与平台无关的语言,并引入代理(ORB)概念,因此CORBA应用具有较好的跨平台性。

  33. OBJECT REFERENCE SERVANT CLIENT SERVER SKELETONS STUBS IIOP ORB ORB METHOD REQUEST 9.4 分布对象主流技术---CORBA • CORBA结构一次请求的过程 CORBA结构一次请求的过程

  34. 9.4 分布对象主流技术---COM/DCOM COM,DCOM,OLE和ActiveX • OLE对象链接和嵌入(Object Linking and Embedding) • 从用户角度看OLE 1. OLE文档:以文档为中心,OLE集成数据 2. OLE自动化 3. OLE控件:可以被嵌入应用程序中的自包含的, 可重用的组件.

  35. 9.4 分布对象主流技术---COM/DCOM

  36. 9.4 分布对象主流技术---COM/DCOM

  37. OLE自动化 9.4 分布对象主流技术---COM/DCOM 从程序员的角度看OLE OLE控件 属性 事件 为 将 来 而 建 造 OLE文档 就地激活 (可视编程) 链接 剪贴板 拖放 嵌入 结构化存储 一致数据传输器(UDT) 跟踪器 (永久命名) 组件对象模型(COM)

  38. 9.4 分布对象主流技术---COM/DCOM • 构件对象模型COM (Component Object Model ) 是一个用于在交互平台上开发客户/服务器应用程序开放结构. • COM是微软的构件对象模型,是构件之间实现互操作的二进制标准. • COM对象通过接口来显示功能。接口是COM对象与外部世界的一个绑定约定。 • COM可以用不同语言实现. • COM只能运行在WINDOWS平台上 • COM实现了OLE对象的底层通信,其作用类似于CORBA/ORB

  39. 9.4 分布对象主流技术---COM/DCOM • ActiveX是OLE技术和COM技术在Internet网上的一个扩展.但是它的内容更多,它还组成了一系列用来产生丰富的Internet网和多媒体服务. • ActiveX文档: 将OLE文档扩展到internet,能够由浏览器打开的word,powerpoint文件 • ActiveX控件: 将OLE控件扩展到internet。如一个页面包含ActiveX控件,该控件可以自动下载到用户端。 • ActiveX脚本: • 将OLE自动化带进internet。可以利用VBScript,JavaScriot,Perl,等语言编写。

  40. 9.4 分布对象主流技术---COM/DCOM • 分布式组件对象模型(DCOM或ActiveX/DCOM):被称为网络OLE,是二进制的COM对象在局域,广域网和Internet上的扩展. • COM能够使客户在本地处理中透明地访问库中的对象,DCOM允许在远程处理中透明地访问对象。(DCOM的功能实现使得程序员不必编写网络代码,或仅仅知道如何编写网络代码) • DCOM基于 (RPC--- remote procedure call )工作,它不是一种编程语言,而是一种规范,一种服务,是一种高级网络协议。 • DCOM是用COM实现的。

  41. 9.4 分布对象主流技术---COM/DCOM • ActiveX控件通过底层DCOM进行通信,允许控件互相访问对方公布了的方法,而不必考虑控件是否在一个容器或同一台机器上。 • ActiveX控件由事件连接在一起, 开发环境支持开发者创建方法,当任何一个构件出发了一个事件,这些方法都被调用. • 目前有十几家公司提供大量的控件,你可以访问这些公司的WEB站点,下载你需要的ActiveX控件,进行编程: www.activex.com. • Windows98和WindowsNT5.0都把DCOM作为操作系统的一部分.

  42. 9.4 分布对象主流技术---Java/RMI Java/RMI • RMI是分布在网络中的各类Java对象之间的进行方法调用的ORB机制. • Java语言支持通信的最基本机制是Socket. 但是Socket要求客户和服务器在应用程序级上对交换信息编码的协议达成一致. • RPC把通信接口抽象到子程序级,而不是直接与 Socket打交道,但由于不涉及对象,在分布式运算中效果不好. • Java/RMI(Remote Method Invocation)是Java特有的分布式计算技术,它允许运行在一个Java虚拟机上的对象调用运行在另一个Java虚拟机上的对象的方法.

  43. Application Client Server Remote Reference Layer Stubs Skeletons RMI System Transport 9.4 分布对象主流技术---Java/RMI • RMI系统的一般结构 1. Stub就是代表远程对象的客户方代理,定义远程对象版本所支持的所有接口. 2. Skeletons是与服务器方的RRL接口的服务器方构件 3. RRL负责维护不与具体Stub或Skeleton模型相关的独立引用协议.这个灵活性使RRL的改变不会影响另外两层. 4. 传输层由4个抽象构成: 端点,通道,连接,传送

  44. Web Server Client URL protocol RMI Server RMI URL protocol RMI Web Server registry URL protocol 9.4 分布对象主流技术---Java/RMI • RMI系统的一般原理: 1. 定位远程对象: RMI的命名工具注册远程对象. 2. 和远程对象通信: RMI传输层处理通信细节 3. 装载被串对象的字节码: RMI提供了传递数据和 装载一个对象代码 的必要机制

  45. Enterprise JavaBean 客户 容器连接 容器 EJB服务器 9.4 分布对象主流技术---EJB • EJB---(Enterprise JavaBean1.0)是Java服务器端构件模型. • 构件模型通常有客户端构件和服务器端构件构件 • 客户端构件模型JavaBean专门用于处理程序的表示及用户界面的问题. • 服务器端构件模型 EJB,把构件模型的 开发和中间件联系 起来,面向事务处理 的中间件提供基础 设施.

  46. 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兼容

  47. 9.4 分布对象主流技术---EJB • EJB与JavaBean的关系 1. 客户端的JavaBeans容器可以根据JavaBeans的属性,方法,事件的定义在设计时或运行时对Java Beans进行操作. 一般JavaBeans是可视化的构件. 一个标准的JavaBeans是一个客户端构件,在运行时不能被其它客户机程序存取或操作 2. EJB没有用户界面,并完全位于服务器端,EJB可以由多个JavaBeans组成. 3. EJB可以和远程的客户程序端通信,并提供一定的功能. 如果不和客户端程序交互,EJB一般不执行具体的功能. 4. EJB与JavaBeans的一个重要区别是EJB提供了网络功能.

  48. 9.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. 客户端 9.4 分布对象主流技术---EJB • EJB的网络计算 在网络计算环境中利用Java的最好途径是由EJB提供服务器端的构件,而由JavaBeans提供客户端构件.

  50. 9.4 分布对象处理技术---几种构件模型的比较 • 组件:CORBA,JavaBean,ActiveX • 协议:IIOP, RMI, DCOM • CORBA最大的特点是语言中性和跨平台.可以跨越不同网络,不同机器和不同操作系统,实现分布对象之间的互操作.整体功能最强. • Java提出了一个概念清晰,结构紧凑的分布计算模型和构件互操作方法,为构件应用开发提供了相当的灵活性,使用上比CORBA方便.但是没有提供分布对象事物管理等服务. • 微软结合ActiveX/DCOM的开发,配套提出了自己的事务服务器(MTS)和消息队列服务器,加之asp 的使用,以及wizard的可视化编程环境,倍受业界的欢迎.

More Related