中间件总结(软件体系结构与分布式对象技术)这门课程的名字叫做《中间件技术》,整个学期就讲了一章的内容,总共也就几十页,实际上就是Java课本上的第二十章,软件体系结构与分布式对象技术如果你们的老师还是袁绍欣的话,老师上课有自己的风格,并不仅仅局限在书本上,更多的时候老师喜欢讲一些自己的认识和见解。
上这门课其实也很有意思,老师有时候会天马行空,总之上课的时候应该是很轻松的,,老师的意思是,想传授给大家的是思想,而不是固定的什么知识。
然后是备战考试,,备战考试的话,实际上一天足矣,因为真的就这些内容,如果你将下面的内容都掌握了,考个80分是不成问题,但是要得95这样的高分,我看也并非易事。
具体来说,考试只有三种题目(起码我这届和我上一届都是这样),简答题(11*5 )+ 画图题(3*5 )+ 论述题(3*10 )= 100 。
简答题和画图题都是书上的知识,而后30分就是考你对中间件和分布式的真正理解了。
主要的知识点就是下面的内容,我整理出来给大家,但是并不是希望大家就是考前一天把它背下来,然后考后一天就全部忘光了。
我希望大家能够真正去理解中间件是什么,去理解分布式对象技术,那么,我的目的就达到了,同时,我觉得老师教学的目的也达到了。
从以往的考试来看,,,打小抄的同学数量绝对不占少数,不管男生还是女生,,这种现象非常严重,,,我觉得真的没有必要,,但是现在大学考试的趋势就是这样,我也管不了,我只是希望大家摸着自己的良心,堂堂正正去考一场试。
你的学长:BIGBALLON1. 软件结构体系的含义和主要类型有哪些?含义:软件结构体系是具有一定的软件结构化元素以及它们相互关系的集合。
主要类型:构成角度:构件和它们之间的调用关系开发过程角度:概念结构和物理结构运行角度:静态结构和动态结构部署角度:集中式结构和分布式结构2. C/S 和 B/S 各自都有哪些优点和缺点?Client/Server (客户端/服务器)特点:必须在客户端安装数据库客户端,并且需要一定的局域网络带宽满足通信优点:开发容易,部署简单,执行速度快,界面表现形式丰富缺点:维护困难Browser/Server (浏览器/服务器)特点:这种结构,服务器端部署Web服务,应用服务和数据库服务。
使用Web服务来响应用户的请求优点:维护扩展方便缺点:开发部署复杂,执行速度比C/S慢,界面表现形式不及C/S丰富3. 软件客户端都有哪些主要类型,富客户端中的Ajax有何特点,都有哪些富客户端产品?a. 胖客户端( C/S ),瘦客户端( B/S ),富客户端( RIA ,Rich Internet Application )b. Ajax (Asynchronous Javascript And XML,异步JavaScript和XML ) 的特点:能够异步地向服务器提交请求,用户无须等待浏览器返回就可以继续浏览器其他操作。
(百度中输入一个词,会出现下拉列表,详见书本)c.d. 富客户端产品:微软的Silverlight/WPF Adobe的Flex Sun的JavaFX 开源社区的Laszlo4. 分布式软件系统的含义,它的特点是什么?含义:分布式软件系统就是将物理上分散的独立构件或系统,在使用逻辑上统一起来,相互合作来共同完成任务。
特点:物理上独立,逻辑上统一5. 分布式软件系统需要处理哪些共性问题?a. 网络通信协议和通信方式的选择。
(协议主要有 TCP/UDP/HTTP/SOAP)选择TCP的目的是为了可靠的网络传输选择UDP强调传输的效率选择HTTP则专注于可穿越防火墙的Internet通信选择SOAP则为了集成异构平台上的各种应用b. 提供RPC接口 ( 远程过程调用Remote Procedure Call )c. 名称查找d. 安全机制e. 事务管理6. 中间件的含义是什么?中间件是将不同软件构件和操作者与多种应用程序连接起来的软件。
解决分布式系统某一类的共性问题。
处于操作系统与应用程序之间。
7. 同框架相比,中间件是可以独立运行的成品软件,而框架不具有独立运行能力,是个半成品。
8. 中间件的作用和分类?作用:中间件提供API,可以进行软件的二次开发,它的用户是软件开发人员。
基于中间件开发的应用程序,因为可不断复用中间件,所以能提高应用程序的质量,缩短开发时间。
分类:应用类别:数据访问中间件,远程过程调用中间件,交易中间件,消息中间件对象中间件,应用服务器中间件、工作流中间件等通信实现机制: a. 远程过程调用(RPC),物理上分布,逻辑上统一。
强耦合b. 利用消息进行通信。
弱耦合c. 对象请求代理 ( ORB,Object Request Brokers ) 弱耦合9. 消息的含义,消息模型的类型有哪些?消息含义:消息就是需要传递的数据,是分布式软件系统的重要通信手段之一。
消息模型:消息传递参与者:点对点和发布/订阅消息传递方向:“推”和“拉”消息通讯方式:同步和异步P2P在P2P模型中,有下列概念:消息队列(Queue)、发送者(Sender)、接收者(Receiver)。
每个消息都被发送到一个特定的队列,接收者从队列中获取消息。
队列保留着消息,直到它们被消费或超时。
每个消息只有一个消费者(Consumer)(即一旦被消费,消息就不再在消息队列中)发送者和接收者之间在时间上没有依赖性,也就是说当发送者发送了消息之后,不管接收者有没有正在运行,它不会影响到消息被发送到队列。
接收者在成功接收消息之后需向队列应答成功如果你希望发送的每个消息都应该被成功处理的话,那么你需要P2P模型。
Pub/Sub在Pub/Sub模型中,有下列概念:主题(Topic)、发布者(Publisher)、订阅者(Subscriber)。
客户端将消息发送到主题。
多个发布者将消息发送到Topic,系统将这些消息传递给多个订阅者。
每个消息可以有多个消费者发布者和订阅者之间有时间上的依赖性。
针对某个主题(Topic)的订阅者,它必须创建一个订阅之后,才能消费发布者的消息,而且,为了消费消息,订阅者必须保持运行的状态。
当然,为了缓和这种严格的时间相关性,JMS允许订阅者创建一个可持久化的订阅。
这样,即使订阅者没有被激活(运行),它也能接收到发布者的消息。
如果你希望发送的消息可以不被做任何处理、或者被一个消费者处理、或者可以被多个消费者处理的话,那么可以采用Pub/Sub模型。
10. JMS的含义是什么,JMS的构成?含义:JMS(Java消息服务Java Message Service)是一组由Sun定义的Java应用程序接口(Java API),它规定了创建、发送、接收、读取消息的一系列标准,这些标准为广大消息中间件厂商所遵守,从而为各利益相关方带来益处。
JMS构成: a. JMS提供者 b. JMS客户端 c. 消息对象 d. 管理对象11. JMS的主要接口JMS公共接口:ConnectionFactory:连接工厂,JMS 用它创建连接Connection:JMS 客户端到JMS Provider 的连接Destination:消息的目的地Session:一个发送或接收消息的线程MessageProducer:由Session 对象创建的用来发送消息的对象MessageConsumer:由Session 对象创建的用来接收消息的对象12. 主要的分布式对象技术有哪些?目前有的技术:OMG的CORBA(对标准进行规定)Sun的JavaRMI与JNDI(既是标准也是实现)Microsoft的COM+(既是标准也是实现)Microsoft 和 IBM 等IT企业联合发起的 WebService。
Sun的JavaRMI与JNDI、Microsoft的COM+两种体系的特点:统一体系内的分布式对象能互相操作,两个体系之间的分布式对象彼此不能直接通信。
13.CORBA的定义?CORBA(Common Object Request Broker Architecture, 公共对象请求代理体系结构)是由OMG组织制订的一种标准的面向对象应用程序体系规范。
其标准内容主要包括:对象模型、语言映射、互操作协议和对象服务四个部分ORB是CORBA体系的核心,是一种能将客户端对象请求转化为服务器端对象调用的一种机制。
Stub和Skeleton ,前者放在客户端,后者在服务器端,充当客户端对象,服务器端对象,ORB的粘合剂。
14. Java的分布式对象技术Java RMI(Remote Method Invocation,远程方法调用,RMI)Java IDL(Interface Definition Language,接口定义语言,IDL)15. RMI是什么,它的通信方式是怎样的?含义:RMI就是Java的RPC技术,即一个JVM内存空间对象可以获得另一个JVM内存空间对象的远程引用,并向其发消息,就好像两个对象在同一个JVM中的效果一样。
通信方式:客户端程序调用Stub,Stub对客户端程序隐藏网络通信的细节,并通过网络将调用传递到服务器端的Skeleton,Skeleton将调用转给服务器端对象,服务器端对象执行相应的调用,之后将结果按原路返回给客户程序。
16. RMI的通信架构?RMI的通信架构有三层:a. Stub/Skeleton层:提供客户对象和服务对象彼此的交互接口b. 远程引用(Remote Reference)层:处理客户端对服务器端对象引用的创建和管理c. 传输(Transport)层:提供通信协议,用以传输客户端对象与服务器对象之间的请求和应答。
17. RMI案例开发基于RMI的分布式对象系统包括如下步骤:①定义远程接口,接口中定义所需的业务方法②编写服务器端对象类,并实现远程接口③通过rmic产生stub和skeleton④编写客户端程序并进行编译⑤在客户端和服务器端部署字节码文件⑥启动注册表并登记服务器端对象,运行客户端程序18. JNDI的含义是什么?含义:JNDI(Java Naming and Directory Interface)是Java的命名和目录服务接口,其接口标准被许多命名服务和目录服务产品实现因而通过JNDI对这些命名服务和目录服务进行统一访问。
命名服务:将一个名字和一个对象建立一种映射关系,可以根据名字找到对象。
目录服务:目录是在Internet和Intranet上对信息资源进行管理的一种有效的方式,它采用树状的层级架构存储信息,并提供相应的目录协议进行访问。
目录服务包括命名服务。
19. 目录服务的产品?目录服务的产品:Sun公司的网络信息服务Network Information Services(NIS)、微软公司活动目录服务Active Directory Services(ADS)、Novell公司的目录服务,NetWare Directory Services(NDS)LDAP协议:(Lightweight Directory Access Protocol,轻量目录访问协议)协议群组,提供命名管理,目录操作,安全认证等一系列功能。