分布式软件体系结构
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
分布式软件体系结构
编写目标:
●面向计算机专业高年级本科生与研究生的教程。
●可供从事基于Internet/Intranet的分布式软件开发人员参考使用。
要求读者:
●已掌握面向对象程序设计方法与一门面向对象程序设计语言(Java最佳)。
●具备软件工程的基本知识。
总体构思:
●强调理论与实践相结合:理论上以CORBA 2.4为模型,实践中以VisiBroker for Java
4.0为工具。
●强调深度与广度相结合:重点介绍CORBA的同时,兼顾DCOM与EJB两种模型,
最后总结对比这三种典型体系结构的特点。
主要内容:
●分布式计算的基本概念:从C/S过渡到分布式体系结构、OMA体系结构、CORBA
基本概念。
●分布式应用程序的开发:分布式应用程序框架、用IDL编写对象接口、编写服务
程序与客户程序、部署应用程序。
●分布式计算更深入的课题:探讨分布式应用程序的可靠性、伸缩性、安全性、性能
等课题可能提出的问题以及解决途径。
●不同体系结构的比较:总结CORBA、DCOM、EJB、XML等特点。
●配合教学需要的内容:在前言部分提供教学进度供参考,每一章后均配有课后练习
思考题和上机实习题。
引言
分布式计算是当前软件开发技术的一个重要发展方向。C.A.R.Hoare指出:“分布式计算是一个具有重大理论与实践意义的迷人课题,其迷人之处在于理论与实践的同步发展,一方面实践推动了理论,另一方面理论又指导着实践。”本书为读者介绍分布式计算领域的基本概念、开发过程、规范标准等内容。
分布式计算有两种典型的应用途径。第一种应用途径是将分布式软件系统看作直接反映了现实世界中的分布性,例如当今许多业务处理流程通常呈现一种分布式运作方式,负责加工或制造的工厂可能位于珠江三角洲一带,而负责销售与市场营销的部门则可能分别位于北京、上海和广州,这时负责业务流程的软件系统也可作相应的分布式处理。第二种应用途径主要用于改进某些应用程序的运行性能,使它们比单进程的集中式实现更具有效率,此时软件系统的分布性并不是现实世界中分布性的映射,而是为充分利用额外的计算资源而人为引入的。
在计算机硬件技术与网络通信技术的支持下,应用需求驱使计算机软件的规模与复杂度不断增长。面对这种情况,对整个软件系统的体系结构进行分析与设计就远远重要于对算法与数据结构的选择。软件体系结构关心的正是整个软件系统的结构,它决定了一个软件系统由什么样的组件组成,以及这些组件之间的交互关系如何。典型的软件体系结构风格有设计图形用户界面常用的事件驱动风格、操作系统常用的层次化设计、设计编译程序常用的管道与过滤器风格、许多应用程序都会使用的面向对象风格等。
分布式软件系统通常基于客户机/服务器风格,其中客户程序提出信息或服务的请示,而服务程序提供这些信息或服务。客户机/服务器计算模型的发展大约经历了三个里程碑:局域网文件服务器、数据库服务器以及分布式对象。由于当前面向对象技术几乎已渗透到软件开发的每一个角落,先进的分布式软件开发方法当然离不开与面向对象技术的结合,因而分布式软件体系结构通常是客户机/服务器风格与面向对象风格的有效组合,典型的例子有OMG的公共对象请求代理体系结构(CORBA)、Microsoft的分布式组件对象模型(DCOM)、Sun Microsystems的企业JavaBeans(EJB)等。
在这些模型中,CORBA以其规范的严格性、供应商的无关性和其他许多先进的分布式计算特性成为我们教学的首选。在理论教学方面,我们可参考OMG发布的一系列规范和关于CORBA的丰富读物;在课程实验方面,我们既可下载使用IONA Orbix、Inprise VisiBroker 等商品化CORBA产品的30或60天试用版,也可使用OmniORB、TAO等免费CORBA产品。相对于其他分布式计算模型而言,CORBA在理论更为严格与完善,即使读者采用的开发平台未必是CORBA兼容的,CORBA中提出的许多问题也应加以考虑,并可借鉴CORBA 提出的问题解决方案。
本书从软件体系结构的角度介绍分布式软件系统分析与设计的基本概念,描述了分布式软件的开发与布署过程,并探讨分布式软件的可靠性、性能、可伸缩性等高级概念。本书的主要内容分为四个部分。
第一部分“基本概念”介绍分布式计算中的基本概念与基本原理,从客户机/服务器计算模型过渡到真正的分布式计算模型,并掌握OMA与CORBA的基本概念。为避免为传统集中式软件的开发人员一次性引入太多分布式对象计算的新概念,我们需要一个过渡性介绍以实现循序渐进的教学目标,Java RMI以其简单性与实用性自然进入我们的视野。
第二部分“开发过程”首先利用一个完整而简单的分布式应用例子程序介绍一个典型CORBA应用程序的开发过程,然后详细讨论如何利用接口定义语言(OMG IDL)编写对象接口,如何编写服务端程序与客户端程序,以及如何部署最终的应用程序。
第三部分“高级课题”探讨分布式应用程序中的高级课题,提出可能产生的问题以及这些问题的可能解决途径,包括分布式环境下对象查找、如何提高分布式应用程序的可靠性、如何提高服务端程序的可伸缩性等。
第四部分“其他与展望”通过简介与对比其他分布式体系结构(如DCOM、EJB、XML 等)拓宽读者在分布式计算领域的知识面,探讨分布式计算进一步的发展方向。
本书可供从事基于Internet/Intranet的分布式软件开发人员参考使用,也可作为计算机专业高年级本科生与研究生学习分布式计算课程的教材。本书假设读者已掌握面向对象程序设计方法与Java语言,并具备面向对象软件工程的基本知识。
如果选用本书作为授课教材,对具有面向对象程序设计基础并熟练掌握C++和Java语言的学生宜讲授60课内学时,安排课外实验36学时,教学进度安排可参考如下(括号中分别标明了课内学时数与课外实验学时数):第1章(6/6)、第2章(4/0)、第3章(4/6)、第4章(4/0)、第5章(8/6)、第6章(6/6)、第7章(2/0)、第8章(2/0)、第9章(4/0)、第10章(6/0)、第11章(6/6)、第12章(4/6),第四部分的第13至15章(4/0)。对于不熟悉Java语言和Web应用的学生宜讲授80课内学时,安排课外实验40学时。本书课后练习中规模较大或复杂性较高的题目以星号“*”标出,这些题目适合作为课程设计的选题。
在即将由ACM/IEEE-CS修订发布的《计算教学大纲2001(CC2001)》中,“以网络为中心的计算(NC)”已成为14个知识领域之一,其中包含客户机/服务器计算、开发Web 应用、通信与网络、分布式对象系统、协作技术与群件等专题。本书内容覆盖了该知识领域的许多专题。
本书中所有例子程序均使用Inprise公司的VisiBroker for Java 4.0和WebGain公司的VisualCaféEnterprise Edition 4.0平台开发,这些例子很容易移植到其他开发平台。读者可从我们的教学网站下载这些例子程序的全部源代码。
分布式软件系统是软件开发的一个新兴领域,并且各种分布式计算模型还在不断地迅速发展。由于作者水平有限,书中谬误之处在所难免,恳请广大读者不吝批评指正。
李文军(lnslwj@)
周晓聪(lndcs01@)
李师贤(lnslsx@)
2001年5月于广州康乐园