资源描述
Slide Title,Articles and prepositions are not caps in titles,Unless,of course,the title starts with one,Proper names always have leading caps,Acronyms are always all caps,Fifth level,Capitalize the first word of all bullet items,This applies to sub-bullets too,Rose,Apex,and Ada,not ROSE,APEX,and ADA,*,Distributed Computing Middleware,沈备军,Module:Distributed Computing Middleware,分布计算中间件,高级专题,本节内容,概述,分布对象中间件,Web,服务中间件,开发分布系统面临的问题,网络通信,分布系统 往往建立在传输层之上,协调,同步,激活,/,去活,并发等,可靠性,通信可靠性,事务性,容错性等,伸缩性,访问透明性,位置透明性,迁移透明性,复制透明性 等,异构性,平台异构,编程语言异构等,中间件的定义,IEEE,中间件通过提供简单、一致、集成的分布编程环境,简化分布应用的设计、编程和管理。本质上,中间件是一个分布软件层(或平台),抽象了底层分布环境(网络、主机、操作系统、编程语言)的复杂性和异构性。,CMU-SEI,中间件是一组支持软件连接的服务的集合,允许在一个或多个主机上运行的多个过程通过网络进行交互。,美国国家自然基金委员会,中间件是连接分布在,Internet,或局域网上的多个应用的软件。具体而言,中间件是一组驻留在网络与传统应用之间的一组服务,用以管理安全、访问以及信息交换。,中间件的分类,1),数据访问中间件,允许应用程序和本地或者异地的数据库进行通信,并提供一系列的应用程序接口(如,ODBC,、,JDBC,等)。该类中间件技术上最成熟,但局限于与数据库相关的应用。,2),消息中间件,可以屏蔽平台和协议上的差异进行远程通信,实现应用程序之间的协同,如,IBM,的,MQSeries,、,BEA,的,MessageQ,等、其优点在于提供高可靠的同步和异步通信,缺点在于不同的消息中间件产品之间不能互操作,开放性差,3),远程过程调用,RPC,中间件,该类中间件解决了平台异构的问题,但编程复杂且不支持异步操作。,Gartner Group,将目前可用的主流中间件划分为五类:,中间件的分类 (,2,),4,)事务中间件,是在分布、异构环境下提供保证事务完整性和数据完整性的一种平台,如,BEA,的,TUXEDO,和,IBM,的,CICS,。事务中间件的优势在于对关键业务的支持,但机制复杂、对用户要求较高。,5,)对象中间件,在分布、异构的网络计算环境中,可以将各种分布对象有机地结合在一起,完成系统的快速集成,是中间件技术发展的主流。主流的对象中间件包括,CORBA,、,RMI,和,DCOM,。,中间件的发展趋势,支持基于构件的软件开发,对象中间件,=,构件中间件,如,J2EE/EJB,、,CORBA/CCM,、,COM+/.NET,支持,Internet,应用,Internet,中间件技术,Web Services,支持移动应用,-,移动计算中间件,支持自治计算,XML,、工作负载管理、软件,Agent,技术等,下一代中间件的主要特性之一,支持服务质量,中间件的,QoS,,包括,QoS,规约、映射和执行等,支持自反(,Reflection,)机制,“黑盒”,=”,白盒”,两种基本能力:,introspection,与,intercession,本节内容,概述,分布对象中间件,Web,服务中间件,构件接口技术的基本概念,从构件的开发和使用角度看:,构件使用者,构件,接口,构件开发者,开发,使用,构件接口技术的基本概念,从构件的运行角度看:,构件,运行协议,构件运行环境的标准化将更好地支持构件之间的互操作,构件运行的环境,(,container,),协议保证了构件的易移植性,构件接口技术的基本概念,从构件的部署和维护角度看:,构件,部署和维护,部署和维护的工具构件运行的环境,(,App Server,),部署和维护的工具应符合一定的标准。,企业应用构架,-,n-tier C/S,架构,HTML,Script Languages,.,JSP,Servlets,CGI,.,EJB,CORBA,COM+,Native languages,Client/,Browser,Web,Server,Application,Server 1,Legend,System,Database,Server,Application,Server n,客户机,表示层,业务服务层,后端系统,应用服务器,-,服务器端的构件容器和中间件服务,获得多层体系结构的优点是需要代价的,服务器端存在着诸如构件的生命周期管理、多层次间的负载平衡、同一构件的多客户并发访问控制、安全认证等一系列复杂问题。,解决这些问题需要专家级别的中间件知识和行业规范,应用服务器的诞生就是为了让人们能够共享这样的服务,而不需要自己去开发。,应用服务器为构件提供了服务器端的运行环境,提供常用的中间件服务,比如资源缓冲,网络操作等等,构件接口模型,-,服务器端构件容器的标准化及其与构件的接口协议,应用服务器在保证可靠性和可扩展性的前提下,提供了构件所需要的运行环境和中间服务。但仅此不够,我们还需要一个统一的服务器端构件接口模型。,构件接口模型为构件的应用服务器及其部署工具提供了一个接口标准,并完善地定义应用服务器和构件本身之间的接口,从而保证了构件的易移植性。,构件接口模型,-,三种主流的模型,Microsoft:DNA/COM+,Distributed interNet Application Architecture/Common Object Mode+,OMG:OMA/CORBA,Object Management Architecture/Common Object Request Broker Architecture,Sun:J2EE/EJB,Java 2 Platform Enterprise Edition/Enterprise JavaBean,EJB/J2EE 技术,1 J2EE,概述,1)Java,平台的发展历程,2)J2EE,核心技术,3)J2EE,应用开发过程中的不同角色,2 EJB,技术,1),EJB,简介,2),EJB,的体系结构,3),EJB,的编程模型,4),EJB,构件的开发,Java,平台的发展历程,Java,平台的第一个参考实现是,JDK,。但,JDK,并未支持服务器端构件开发。,为了提供服务器端部署的企业级服务,,Sun,公司开始开发一些,Enterprise API,。这些服务包括命名和查找服务,事务服务,和,EJB 1.0 API,为了解决,Enterprise API,的问题,,Sun,公司提出了三个不同的,Java,平台:,J2ME,(,Java 2 Platform,Micro Edition,)、,J2SE,(,Java 2 Platform,Standard Edition,)和,J2EE,(,Java 2 Platform,Enterprise Edition,)。,J2EE,核心技术,-,n-tier 应用架构,RMI,客户机,表示层,业务服务层,后端系统,浏览器,应用程序,浏览器,Applet,Web/HTTP,服务器,JSPs,Servlets,分布式,CORBA,对象,遗产系统,数据库,应用服务器,Java IDL,JNDI,JDBC,JMS,EJB,EJB,EJB,EJB,J2EE,核心技术,J2EE1.3/EJB2.0,规约,Java 2 Platform,Enterprise Edition(J2EE)v1.3,JSPs,和,Servlets,安全认证服务,/JAAS,Java 2 Platform,Standard Edition(J2SE)v1.3,Java IDL/IIOP,RMI/JRMP,JDBC,核心,HTTP,Java Security,JDBC,扩展,RMI/IIOP,命名目录接口,JNDI,XML/JAXP,消息服务,JMS,交易管理,JTS/JTA,Connectors,会话、实体、消息驱动等类型,EJB,的容器,BMP,和,CMP,机制,EJB 2.0,EJB,部署,EJB QL,EJB,异常处理机制,J2EE,核心技术,-EJB(Enterprise JavaBeans),EJB,是,J2EE,规约中最重要的部分。,EJB,提供了让客户端使用远程的分布式对象的框架,极大地简化了具有良好的可扩充性的企业级软件的开发。,EJB,规约规定了,EJB,构件(指符合,EJB,规约的构件)如何与,EJB,容器(,container,)进行交互,而,EJB,容器则提供诸如目录服务、事务管理、安全、连接池管理、容错等服务。,J2EE,核心技术,-RMI,和,RMI-IIOP,Java RMI(Remote Method Invocation),是,EJB,构件和客户端的通信,API,,它和,Java,语言本身紧密结合,允许进程间通信并提供其他通信相关的服务。,RMI-IIOP,是一个可移植的,RMI,扩展,它利用,OMG,的,IIOP(Internet Inter-ORB Protocal),协议作为通信协议,,IIOP,对,J2EE,与,CORBA,系统集成也是必需的。,J2EE,核心技术,-JNDI,JNDI,(,Java Naming and Directory Interface,)是命名和目录服务的标准。,EJB,依赖,JNDI,通过网络来查找分布式构件。,JNDI,是客户端代码连接,EJB,构件所必需的关键技术。,J2EE,核心技术,-JDBC,JDBC(Java Database Connectivity),同,ODBC,一样,隐蔽了程序访问数据库的细节,允许程序员使用相同的接口来访问各种不同的数据库。,JDBC,是使用纯,Java,写的,它可以跨平台的访问各种数据库。,J2EE,核心技术,-JTA,和,JTS,JTA,:,Java Transaction API,JTS,:,Java Transaction Service,J2EE,核心技术,-JMS,JMS,(,Java Messaging Service,)是一套与面向消息的中间件,(MOM),通信的,API,。,JMS is an API that describes an interface to client/server messaging systems.Client/server messaging systems are commonly referred to as message-oriented middleware(MOM),JMS,同时支持点对点的消息队列服务和发布,-,订阅消息服务。,JMS,支持可靠消息传递、消息传递事务、持续消息等特性。,JMS,是实现,EJB,中消息驱动,Bean,的基础。,J2EE,核心技术,-JSP,和,Servlets,JSP:Java Server Pages,客户端请求,JSP,页面时,服务器会先对该页面中的,Java,代码进行处理,将返回的,HTML,送还给客户端。,Servlet,是一种扩展,Web Server,功能的,Java,代码,是服务器端的程序,在用户请求时执行。,Servlet,是纯粹的,Java,代码,但它可以输出合法的,HTML,代码。,J2EE,核心技术,-JCA,JCA:,Java Connector Architecture,JCA,定义了,J2EE,平台连接异构的企业信息系统,EIS,的标准架构。,J2EE,核心技术,-XML,XML(eXtensible Markup Language,,广泛标记语言,),是由万维网联盟,(W3C),制订、得到业界广泛支持的标准,被专门设计为描述数据的标准元语言。,在,Java,中可以使用,JAXP,(,Java API for XML Parsing,)来对,XML,文件进行解析。,J2EE,中的许多配置文件使用了,XML,。,J2EE,应用开发过程中的不同角色,应用组装者,容器提供者,服务器提供者,应用部署者,系统管理员,EJB,EJB,模块部署描述,JAR模块,EJB JAR模块,J2EE应用,部署描述,WEB WAR,模块,EAR应用,构件开发者,EJB,构件,Develop,Package,Enterprise Application Server,(Vendor Implementation of J2EE APIs/Services),Enterprise Application Container(J2EE Container),Develop,Develop,Package,Deploy,Manage,EJB,的架构,对象池,EJB,客户机,业务方法,创建、删除、查找,Bean,实现,EJB,部署描述,Bean,代理,。,Home,接口,Remote,接口,EJB,服务器,EJB,容器,EJB,架构,-EJB,客户机,EJB,客户机是指请求,EJB,构件服务的应用程序。,EJB,规约为创建,EJB,构件的客户接口定义了一套标准。这套标准主要包括:,EJB Home,接口:,EJB Home,接口为客户机创建、删除、查找,EJB Remote,接口对象的句柄提供了相应的操作。,EJB,客户机使用,JNDI,来查找对,EJB Home,接口的引用。,EJB Remote,接口:,EJB,客户机通过,EJB Remote,接口调用,EJB,构件的业务方法。,RMI/IIOP,或,RMI/JRMP,协议:,RMI/IIOP,或,RMI/JRMP,是,EJB,客户机与,EJB,服务器进行通信的标准协议,这些底层的分布式通信机制对于,EJB,客户机和,EJB,构件开发者都是透明的。,EJB,架构,-EJB,服务器,EJB,服务器为使用,EJB,构件的应用程序提供操作环境,并提供所有必需的服务,来支持,EJB,架构。,EJB,规约为每个支持,Java,的应用程序服务器定义了一个标准模型。任何厂商都可以使用此模型来实现对,EJB,构件的支持。,多种系统(如,TP,监视器、,CORBA,运行系统、,COM,运行系统、数据库系统、,Web,服务器系统或其它基于服务器的运行系统)都可以调整到能够支持易移植的,EJB,构件。,EJB,架构,-,EJB服务器的,主要功能,管理,EJB,容器,(EJB,容器则管理,Bean),提供对操作系统服务的存取,提供,Java,相关的服务,尤其是,-,通过,JNDI,访问命名空间,-,基于,OTS,的事务处理服务,EJB,架构,-EJB,容器,EJB,构件并不在,EJB,服务器的顶部直接执行。一个称为,EJB,容器的中间件在,EJB,服务器环境中运行,,EJB,容器为,EJB,构件提供操作环境。主要来说,,EJB,容器管理了以下的系统级问题:,持久性(,Persistence,):容器决定何时载入储存状态,又可分为,CMP,(Container-Managed Persistence),和,BMP(Bean-Managed Persistence),。,生成周期管理(,Life Cycle Management,):容器管理,EJB,构件的实例,使,EJB,构件实现最大的效能和内存利用率。容器能够激活和失效,EJB,构件,管理实例池,等等。,事务管理(,Transaction Management,):容器负责管理分布式事务处理的复杂问题。,安全性(,Security,):,部署描述文件定义了客户能够访问的不同的应用函数。容器只允许授权的客户访问这些函数。,远程连接(,Remote Connectivity,):容器为远程连接管理底层的通信问题,而且对,EJB,构件的开发者和客户都隐蔽了通信问题。,EJB,的编程模型,-,EJB构件的分类,会话,(Session)Bean,无状态会话,(,Stateless Session),Bean,:仅对单个用户提供服务,并不保留任何程序状态。系统结束时其生成周期也同时结束。,有状态会话,(Stateful Session)Bean,:提供与单个用户的交互,为每个用户记录各自的状态,但系统结束时其生命周期也同时结束。,实体,(Entity)Bean,:,提供了持久数据的操作与表示。可以同时与多个客户机进行交互,系统结束时其运行状态仍能保留。,消息驱动,(Message Driven)Bean,:,不能由客户端直接获得其引用而调用其方法,只能由系统消息来启动。,在,EJB v2.0,规约中,,EJB,构件分为,3,种类型:,EJB构件的开发,本机接口(,Home Interface,):,本机接口主要提供与构件的生命周期相关的方法,如建立、销毁、查找等。,远程接口(,Remote Interface,):,远程接口则表示构件所实现的业务功能。,Bean,类(,Bean Class,):,每一个远程接口都有一个实现类,该实现类实现了远程接口中所定义的业务方法。,所有的,EJB,构件都有,3,个基本组成部分:,EJB构件的开发-实体Bean的例子,EJB构件的开发-JAR归档文件,一个,EJB,构件的远程接口、本机接口及自身的类文件及其控制信息,(,部署描述文件、环境属性文件和清单文件,),将被封装成一个,JAR,文件。,部署描述文件:容器为,EJB,构件自动处理持久性、事务、一致性及访问控制等工作。,EJB,规约提供了一种说明这些操作是如何处理的机制,这就是,XML,格式的部署描述文件。,环境属性文件:环境属性作为键,-,值对存储在一个文件中,可通过,java.util.Properties,访问此文件。,清单文件是标识,EJB,构件及其相关文件所必需的。,EJB构件的开发-部署,EJB,构件是在称为部署,(Deploy),的特定过程中被安装的,由容器提供对部署过程的支持。,在部署时,容器分析,JAR,文件的内容,并采取必要的操作使此构件可用。这些操作包括:,生成实现构件的本地和远程接口的新,Java,类;,将本地接口实现绑定到,JNDI,命名空间中;,生成桩和骨架类,这是支持,RMI,通信所必需的;,生成,Bean Class,的子类,加入容器专用的代码;,部署时由容器生成的类通常是容器专用的,而不像,JAR文件,那样具有易移植性。,EJB构件的开发-客户端编程,CustomerHome home;Object ref;,/,通过,JNDI,得到服务器上,bean,的引用,ref=jndiContext.lookup(java:comp/env/ejb/Customer);,/,将引用的类型转换到,Customer,home=PortableRemoteObject.narrow(ref,CustomerHome.class);,/,用本机接口生成实例并将其引用传给远程接口,Customer customer=home.create(customerID);/,用户通过远程接口执行所需的工作,customer.setName(someName);,EJB,应用开发实例,-,服务器端,Arith,add(),ArithBean,ejbCreate(),ejbRemove(),ejbActivate(),ejbPassivate(),setSessionContext(),add(),ArithHome,create(),EJBHome,getEJBMetaData(),getHomeHandle(),remove(),remove(),(from ejb),EJBObject,getEJBHome(),getHandle(),getPrimaryKey(),isIdentical(),remove(),(from ejb),SessionBean,ejbActivate(),ejbPassivate(),ejbRemove(),setSessionContext(),(from ejb),EJB,应用开发实例,-,Arith.java,package j2eetest;,import javax.ejb.*;,import java.util.*;,import java.rmi.*;,public interface Arith extends javax.ejb.EJBObject,public int add(int a,int b)throws RemoteException;,EJB,应用开发实例,-,ArithHome.java,package j2eetest;,import javax.ejb.*;,import java.util.*;,import java.rmi.*;,public interface ArithHome extends javax.ejb.EJBHome,public Arith create(),throws CreateException,RemoteException;,EJB,应用开发实例,-,ArithBean.java,package j2eetest;import javax.ejb.*;,public class ArithBean implements SessionBean,SessionContext sessionContext;,public void ejbCreate()throws CreateException ,public void ejbRemove(),public void ejbActivate(),public void ejbPassivate(),public void setSessionContext(SessionContext sessionContext),this.sessionContext=sessionContext;,public int add(int a,int b)return a+b;,EJB,应用开发实例,-,客户端,ArithHome,create():j2eetest.Arith,(from j2eetest),Jsp1Bean,aa:int=234,bb:int=567,Init():void,setA(a:String):void,setB(b:String):void,getRes():String,getInitialContext():javax.naming.Context,-arithHome,Arith,add(a:int,b:int):int,(from j2eetest),-arith,EJB,应用开发实例,-,Jsp1Bean.java,public void Init(),try,Context ctx=getInitialContext();,/look up jndi name,Object ref=ctx.lookup(Arith);,/cast to Home interface,arithHome=(ArithHome)PortableRemoteObject.narrow(ref,ArithHome.class);,arith=arithHome.create();,catch(Exception e),e.printStackTrace();,EJB,应用开发实例,-,Jsp1Bean.java,private Context getInitialContext()throws Exception,String url=t3:/localhost:7001;,Properties properties=null;,try,properties=new Properties();,properties.put(Context.INITIAL_CONTEXT_FACTORY,weblogic.jndi.WLInitialContextFactory);,properties.put(Context.PROVIDER_URL,url);,return new InitialContext(properties);,catch(Exception e)throw e;,-,res=arith.add(aa,bb);,COM+,技术,COM+,技术的发展历程,微软分布式网络应用体系结构,Windows DNA,COM+,基本结构,COM+,主要特点,COM+,技术的发展历程,COM,(,Component Object Model,)起源于,OLE,(,Object Linking and Embedding,,对象连接和嵌入);,当时的,OLE,使用一种称为动态数据交换(,Dynamic Data Exchange,,简称,DDE,)机制来支持程序之间的通信,而,DDE,建立在,Windows,消息机制基础上,稳定性和效率都很差;,COM,定义了客户与构件之间互操作的标准,包括规约与实现两部分。,规约部分定义了构件之间的通信机制,这些规约不依赖于任何特定的语言和操作系统。,实现部分即,COM,库,为,COM,规约的具体实现提供一些核心服务。,以,COM,技术为基础的,OLE,后改名为,ActiveX,。,随着,NT4.0,的发布,,COM,技术需要延伸到分布计算环境,这就产生了所谓的,DCOM,(,Distributed COM,,分布构件对象模型)。,COM+,技术的发展历程(续),DCOM,用网络协议来代替本地进程之间的通信,并针对分布环境提供了一些新的特性,例如位置透明、网络安全性、跨平台调用等。,COM/DCOM,技术为基于构件的软件开发提供了基础。但是,如果用它来开发企业级应用系统,显然还需要功能强大的基础设施,这些基础设施将为构件提供基本的运行和部署环境。,为了满足企业级应用的需求,微软公司推出了一种微软事务服务器(,Microsoft Transaction Server,,简称,MTS,)。,MTS,把应用系统的客户程序、应用构件和各种资源有机结合起来,弥补了,COM/DCOM,的不足,为分布式企业应用提供了一种服务器端的构件运行和部署环境。,MTS,是从,NT4.0+SP4,的,Option Pack,开始,随,Windows,操作系统免费提供的。,COM+,技术的发展历程(续),随着因特网应用的日益广泛,企业级应用的体系结构越来越重要。为了使,Windows,真正成为企业应用平台,微软公司又推出了,Windows DNA,(,Distributed interNet Applications Architecture,,分布式网络应用体系结构)。,Windows DNA,是一个完整的、多层的新一代企业应用体系结构,它包含工具、数据库、操作系统、编程模型和应用服务等。,在新的企业应用体系结构下,微软公司希望进一步把,COM,、,DCOM,和,MTS,统一起来,形成真正适合于企业级应用的构件技术,这就是,COM+,。,COM+,仍然以,COM/DCOM,为基础,包含了,MTS,。,COM+,是一种中间件技术的规约,其要点是提供建立在操作系统上的、支持分布式企业级应用的“服务”。,COM+,是在,20,世纪末随着,Windows2000,发布才面世的。,微软分布式网络应用架构,Windows DNA,Windows DNA,是一个服务器端的开发平台,包含了以下产品:,Windows NT/2000,:操作系统,为所有微软公司技术提供运行环境和支持。,DCOM,:支持分布式构件的核心技术。,MSMQ(Microsoft Message Queue),:消息队列产品,支持构件间的异步通信。,MTS,(,Microsoft Transaction Server,):管理构件的应用服务器。,Microsoft Wolfpack,:支持集群服务器的软件。,Microsoft SQL Server,:一个关系型数据库管理系统。,Microsoft IIS,(,Internet Information Server,):,Web,服务器。,Microsoft Management Console,:部署和管理工具。,COM+,技术是以上产品(尤其是,DCOM,、,MTS,、还有,MSMQ,的一部分)的相互结合。,COM+的架构,COM+,的核心是,改进的,COM/DCOM,和,MTS,的集成,但是,COM+,增加了一些非常重要的构件服务,比如,负载平衡、驻留内存数据库、事件模型、队列服务等。,COM+,还提供了一个比,MTS,更好的构件管理环境,COM+Explorer,,用来设置,COM+,应用和,COM+,构件的属性信息。另外,,COM+,还支持所谓的申述式编程模型(,declarative programming model,),它允许开发人员以较通用的方式开发构件,而一些细节则留到部署时再确定。,COM+,COM+,目录,负载平衡,驻留内存数据库,对象池,新的事件模型,构件管理和部署,JIT,激活,事务支持,资源分发管理,安全模型,易于管理,MTS,COM,基于接口的编程模型,基本的构件服务,远程支持,分布式构件服务,DCOM,COM+,主要特点,(1),真正的异步通信,COM+,底层提供了队列构件服务,允许客户和构件进行异步通信。,(2),事件服务,新的事件机制利用系统服务简化了事件模型,避免了,COM,可连接对象机制的琐碎细节,使事件源和事件接收方实现事件功能更加灵活。,(3),灵活性,动态负载平衡以及驻留内存数据库、对象池等系统服务为,COM+,的灵活性提供了技术基础。,(4),可管理和可部署性,COM+,的申述式编程模型和构件管理环境支持应用系统在开发完成后的管理和部署。,(5),易于开发,COM+,开发模型比以前的,COM,构件开发更为简化。,CORBA,概述,CORBA,:,Common Object Request Broker Architecture,,公共对象请求代理体系结构,由,OMG,制定的分布对象模型。,要点:通过,IDL,定义接口,使用不同编程语言、不同编译器实现的构件,可以通过,ORB,连接,形成一个跨平台的应用。,CORBA,产品:,CORBA,是一套规约,而不是一个产品,开发商可以开发不同的产品来实现,CORBA,规约。著名的产品有,IONA,公司的,Orbix,、,Inprise,公司的,VisiBroker,、,IBM,公司的,Component Broker,等。,CORBA,发展,第一代:,CORBA,规约的第一代主要集中在为分布式对象定义一个基础,其核心是,ORB,和,IDL,。,CORBA 2.0,:,1995,年颁布,增加了,ORB,互操作性规约,主要是基于,TCP/IP,的,IIOP,协议,(Internet Inter-ORB Protocal,因特网,ORB,互联协议,),。,CORBA 2.1,:,1997,年颁布,增加了,COM/CORBA,互操作规范。,CORBA 2.2,:,1998,年颁布,增加了易移植的对象适配器(,Portable Object Adapter,,简称,POA,)和,IDL,到,Java,语言的映射规约。,CORBA3.0,草案:,1999,年提交,打算在,2001,年正式发布。,CORBA 3.0,CORBA 3.0,以前的版本只注意到对象本身,而没有进一步考虑可部署的、由应用服务器管理的构件。,CORBA3.0,增加了,CCM,(,CORBA Component Model,),CCM,步微软公司的,COM+,和,Sun,公司的,EJB,的后尘,这三者的核心概念是相似的。它们均提供容器作为构件的运行环境,而诸如事务处理、安全处理、事件处理、持久性等公共服务都是通过公共,API,访问。,但是,目前还没有成熟的、完全实现,CORBA3.0,规约的产品。,OMA,基准模型,应用对象,公共设施,对象服务,对象请求代理,ORB,该模型描述了分布式对象系统的基本成分,有四个主要层次:应用对象,(application objects),、公共设施,(common facilities),、对象请求代理,(ORB),和对象服务,(object services),。,OMA,基准模型,1),对象服务是一组系统级的对象,为实现和管理对象提供了基本的功能,包括名字、生存周期服务、事务服务、安全服务等等。,2)ORB,是核心,它提供了一种机制,使得对象可以透明地发送请求和接受响应。,3),公共设施是适用于众多应用领域的通用构件,例如信息管理、系统管理、任务管理和用户界面等。,4),应用对象是专用于特定领域的应用构件,,OMG,没有为它制定标准。,ORB的架构,ORB Core,GIOP/IIOP,Dynamic Invocation Interface,IDLStube,Client,Interface Repository,Object Implementation,IDLSkeleton,Object Adapter,Dynamic Skeleton Interface,ORBInterface,ImplementationRepository,IDL Compiler,Operation(),输出参数,+,回送值,输入参数,CORBA,应用开发,客户机程序开发者,ORB,库,IDLcompilier,客户机,客户机桩,服务器程序开发者,ORB,库,IDLcompilier,服务器,服务器骨架,IDL,典型的,CORBA,应用开发过程,本节内容,概述,分布对象中间件,Web,服务中间件,产生背景,Web Services,的产生具有如下四个主要原因:,软件产业模式的发展,从以产品为中心的制造业转变为以客户为中心的服务业;,WWW,的发展,从两层体系转变为三层体系;,B2B,的发展,从复杂专用转变为简单通用;,分布计算中间件的发展,从,Intranet,到,Internet,Web,服务的概念,按照,W3C,的定义,,Web,服务是:,用,URI,标识的;,可通过标准,Web,协议存取的;,能接受,发送基于,XML,的消息,并按照行动;,能与应用和程序交互,不必通过人驱动的用户界面,Web,服务模型,Web,服务采用面向服务的概念计算模型,包括三类角色:服务提供者,服务用户和服务注册机构,Web,服务的核心技术,SOAP,、,WSDL,与,UDDI,是,Web Service,的三大核心技术,SOAP:,简单对象存取协议,SOAP,是递交,W3C,的标准,它是一个,RPC,协议,用标准的互联网协议进行传输,XML,数据,以,HTTP,做同步调用,,SMTP,做异步调用。,WSDL:Web,服务描述语言,WSDL,也是递交,W3C,的标准,由,Web,服务描述它能做些什么,接受什么输入信息,以及响应返回什么。,UDDI:,通用描述,发现和集成,UDDI,是,Web Services,的发布与发现的标准机制,它于,2000,年,9,月由,ARIBA,、,IBM,和,MICROSOFT,三家公司共同提出。,SOAP,SOAP,是一种基于,XML,的轻载协议,用于在松散的分布环境中对等地交换结构化和类型化的信息。,SOAP,本身并不涉及任何应用语义,如编程模型或特定语义实现,仅仅定义了将应用数据编码与打包的简单机制。这使得,SOAP,可被广泛应用于各类系统,如基于消息的系统或基于,RPC,的系统。,SOAP,由四部分组成,:,SOAP,编码规则:定义了一种数据序列
展开阅读全文