1、Module: Distributed Computing Middleware 分布计算中间件,高级专题,本节内容,概述 分布对象中间件 Web服务中间件,开发分布系统面临的问题,网络通信 分布系统 往往建立在传输层之上 协调 同步 ,激活/去活,并发等 可靠性 通信可靠性,事务性,容错性等 伸缩性 访问透明性 ,位置透明性 ,迁移透明性,复制透明性 等 异构性 平台异构,编程语言异构等,中间件的定义,IEEE 中间件通过提供简单、一致、集成的分布编程环境,简化分布应用的设计、编程和管理。本质上,中间件是一个分布软件层(或平台),抽象了底层分布环境(网络、主机、操作系统、编程语言)的复杂性和
2、异构性。 CMU-SEI 中间件是一组支持软件连接的服务的集合,允许在一个或多个主机上运行的多个过程通过网络进行交互。 美国国家自然基金委员会 中间件是连接分布在Internet或局域网上的多个应用的软件。具体而言,中间件是一组驻留在网络与传统应用之间的一组服务,用以管理安全、访问以及信息交换。,中间件的分类,1) 数据访问中间件 允许应用程序和本地或者异地的数据库进行通信,并提供一系列的应用程序接口(如ODBC、JDBC等)。该类中间件技术上最成熟,但局限于与数据库相关的应用。 2) 消息中间件 可以屏蔽平台和协议上的差异进行远程通信,实现应用程序之间的协同,如IBM的MQSeries、BE
3、A的MessageQ等、其优点在于提供高可靠的同步和异步通信,缺点在于不同的消息中间件产品之间不能互操作,开放性差 3) 远程过程调用RPC中间件 该类中间件解决了平台异构的问题,但编程复杂且不支持异步操作。,Gartner Group将目前可用的主流中间件划分为五类:,中间件的分类 (2),4)事务中间件 是在分布、异构环境下提供保证事务完整性和数据完整性的一种平台,如BEA的TUXEDO和IBM的CICS。事务中间件的优势在于对关键业务的支持,但机制复杂、对用户要求较高。 5)对象中间件 在分布、异构的网络计算环境中,可以将各种分布对象有机地结合在一起,完成系统的快速集成,是中间件技术发展
4、的主流。 主流的对象中间件包括CORBA、RMI和DCOM。,中间件的发展趋势,支持基于构件的软件开发 对象中间件 =构件中间件,如J2EE/EJB、CORBA/CCM、COM+/.NET 支持Internet应用 Internet中间件技术Web Services 支持移动应用 - 移动计算中间件 支持自治计算 XML、工作负载管理、软件Agent技术等,下一代中间件的主要特性之一 支持服务质量 中间件的QoS, 包括QoS规约、映射和执行等 支持自反(Reflection)机制 “黑盒” =”白盒”,两种基本能力:introspection与intercession,本节内容,概述 分布对
5、象中间件 Web服务中间件,构件接口技术的基本概念,从构件的开发和使用角度看:,构件,接口,开发,使用,构件接口技术的基本概念,从构件的运行角度看:,运行协议,构件运行环境的标准化将更好地支持构件之间的互操作,构件运行的环境 (container),协议保证了构件的易移植性,构件接口技术的基本概念,从构件的部署和维护角度看:,部署和维护,部署和维护的工具构件运行的环境 (App Server),部署和维护的工具应符合一定的标准。,企业应用构架 - n-tier C/S 架构,HTML, Script Languages, .,JSP, Servlets, CGI, .,EJB, CORBA,
6、COM+,Native languages,Client/ Browser,Web Server,Application Server 1,Legend System,Database Server,Application Server n,客户机,表示层,业务服务层,后端系统,应用服务器 - 服务器端的构件容器和中间件服务,获得多层体系结构的优点是需要代价的,服务器端存在着诸如构件的生命周期管理、多层次间的负载平衡、同一构件的多客户并发访问控制、安全认证等一系列复杂问题。 解决这些问题需要专家级别的中间件知识和行业规范 应用服务器的诞生就是为了让人们能够共享这样的服务,而不需要自己去开发。
7、应用服务器为构件提供了服务器端的运行环境,提供常用的中间件服务,比如资源缓冲,网络操作等等,构件接口模型 - 服务器端构件容器的标准化及其与构件的接口协议,应用服务器在保证可靠性和可扩展性的前提下,提供了构件所需要的运行环境和中间服务。但仅此不够,我们还需要一个统一的服务器端构件接口模型。 构件接口模型为构件的应用服务器及其部署工具提供了一个接口标准,并完善地定义应用服务器和构件本身之间的接口,从而保证了构件的易移植性。,构件接口模型 - 三种主流的模型,Microsoft: DNA/COM+ Distributed interNet Application Architecture/ Com
8、mon 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构件的开发,J
9、ava平台的发展历程,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-
10、tier 应用架构,RMI,客户机,表示层,业务服务层,后端系统,浏览器,应用程序,J2EE核心技术 J2EE1.3/EJB2.0 规约,J2EE核心技术 - EJB (Enterprise JavaBeans),EJB是J2EE规约中最重要的部分。EJB提供了让客户端使用远程的分布式对象的框架,极大地简化了具有良好的可扩充性的企业级软件的开发。EJB规约规定了EJB构件(指符合EJB规约的构件)如何与EJB容器(container)进行交互,而EJB 容器则提供诸如目录服务、事务管理、安全、连接池管理、容错等服务。,J2EE核心技术 - RMI 和 RMI-IIOP,Java RMI (Re
11、mote 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核心技
12、术 - 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 interfa
13、ce 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代码进行处理,将返回的HT
14、ML送还给客户端。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 f
15、or XML Parsing)来对XML文件进行解析。 J2EE中的许多配置文件使用了XML。,J2EE应用开发过程中的不同角色,Enterprise Application Server (Vendor Implementation of J2EE APIs/Services),Enterprise Application Container ( J2EE Container),Develop,Develop,Package,Deploy,Manage,EJB的架构,对象池,EJB架构 - EJB客户机,EJB客户机是指请求EJB构件服务的应用程序。EJB规约为创建EJB构件的客户接口定义了
16、一套标准。这套标准主要包括: 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 构件的应用程序提供操作环境,并提供所
17、有必需的服务,来支持 EJB 架构。EJB规约为每个支持Java 的应用程序服务器定义了一个标准模型。任何厂商都可以使用此模型来实现对 EJB构件的支持。 多种系统(如 TP 监视器、CORBA 运行系统、COM 运行系统、数据库系统、Web 服务器系统或其它基于服务器的运行系统)都可以调整到能够支持易移植的EJB构件。,EJB架构 - EJB服务器的主要功能,管理 EJB 容器 (EJB 容器则管理 Bean) 提供对操作系统服务的存取 提供 Java 相关的服务,尤其是 -通过 JNDI 访问命名空间 -基于 OTS 的事务处理服务,EJB架构 - EJB容器,EJB构件并不在 EJB 服
18、务器的顶部直接执行。一个称为EJB容器的中间件在EJB服务器环境中运行,EJB 容器为EJB构件提供操作环境。主要来说,EJB容器管理了以下的系统级问题:,持久性(Persistence):容器决定何时载入储存状态,又可分为CMP (Container-Managed Persistence) 和BMP(Bean-Managed Persistence)。 生成周期管理(Life Cycle Management):容器管理EJB构件的实例,使EJB构件实现最大的效能和内存利用率。容器能够激活和失效EJB构件,管理实例池,等等。 事务管理(Transaction Management):容器负
19、责管理分布式事务处理的复杂问题。 安全性(Security): 部署描述文件定义了客户能够访问的不同的应用函数。容器只允许授权的客户访问这些函数。 远程连接(Remote Connectivity):容器为远程连接管理底层的通信问题,而且对EJB构件的开发者和客户都隐蔽了通信问题。,EJB的编程模型 - EJB构件的分类,会话(Session) Bean 无状态会话(Stateless Session) Bean:仅对单个用户提供服务,并不保留任何程序状态。系统结束时其生成周期也同时结束。 有状态会话(Stateful Session) Bean:提供与单个用户的交互,为每个用户记录各自的状态
20、,但系统结束时其生命周期也同时结束。 实体(Entity) Bean: 提供了持久数据的操作与表示。可以同时与多个客户机进行交互,系统结束时其运行状态仍能保留。 消息驱动(Message Driven) Bean: 不能由客户端直接获得其引用而调用其方法,只能由系统消息来启动。,在EJB v2.0规约中,EJB构件分为3种类型:,EJB构件的开发,本机接口(Home Interface): 本机接口主要提供与构件的生命周期相关的方法,如建立、销毁、查找等。 远程接口(Remote Interface): 远程接口则表示构件所实现的业务功能。 Bean类(Bean Class): 每一个远程接口
21、都有一个实现类,该实现类实现了远程接口中所定义的业务方法。,所有的EJB构件都有3个基本组成部分:,EJB构件的开发 - 实体Bean的例子,EJB构件的开发 - JAR归档文件,一个EJB构件的远程接口、本机接口及自身的类文件及其控制信息(部署描述文件、环境属性文件和清单文件)将被封装成一个JAR文件。 部署描述文件:容器为EJB构件自动处理持久性、事务、一致性及访问控制等工作。EJB规约提供了一种说明这些操作是如何处理的机制,这就是XML格式的部署描述文件。 环境属性文件:环境属性作为键-值对存储在一个文件中,可通过 java.util.Properties访问此文件。 清单文件是标识EJ
22、B构件及其相关文件所必需的。,EJB构件的开发 - 部署,EJB构件是在称为部署(Deploy)的特定过程中被安装的,由容器提供对部署过程的支持。 在部署时,容器分析JAR文件的内容,并采取必要的操作使此构件可用。这些操作包括: 生成实现构件的本地和远程接口的新Java 类; 将本地接口实现绑定到 JNDI 命名空间中; 生成桩和骨架类,这是支持 RMI 通信所必需的; 生成Bean Class的子类,加入容器专用的代码; 部署时由容器生成的类通常是容器专用的,而不像JAR文件那样具有易移植性。,EJB构件的开发 - 客户端编程,CustomerHome home; Object ref; /
23、通过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应用开发实例 - 服务器端,EJB应用开发实例 - Ari
24、th.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 i
25、nterface 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 pu
26、blic 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应用开发实例 - 客户端,EJB应用开发实例 - Jsp1Bean.java,public void Init() try Context ctx = getIn
27、itialContext();/look up jndi nameObject ref = ctx.lookup(“Arith“);/cast to Home interfacearithHome = (ArithHome) PortableRemoteObject.narrow(ref, ArithHome.class);arith=arithHome.create(); catch(Exception e) e.printStackTrace();,EJB应用开发实例 - Jsp1Bean.java,private Context getInitialContext() throws Ex
28、ception 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
29、; - 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定义了客户与构件之间互操作的标准,包括规约与实现两部分。 规约
30、部分定义了构件之间的通信机制,这些规约不依赖于任何特定的语言和操作系统。 实现部分即COM库,为COM规约的具体实现提供一些核心服务。 以COM技术为基础的OLE后改名为ActiveX。 随着NT4.0的发布,COM技术需要延伸到分布计算环境,这就产生了所谓的DCOM(Distributed COM,分布构件对象模型)。,COM+技术的发展历程 (续),DCOM用网络协议来代替本地进程之间的通信,并针对分布环境提供了一些新的特性,例如位置透明、网络安全性、跨平台调用等。 COM/DCOM技术为基于构件的软件开发提供了基础。但是,如果用它来开发企业级应用系统,显然还需要功能强大的基础设施,这些基
31、础设施将为构件提供基本的运行和部署环境。 为了满足企业级应用的需求,微软公司推出了一种微软事务服务器(Microsoft Transaction Server,简称MTS)。 MTS把应用系统的客户程序、应用构件和各种资源有机结合起来,弥补了COM/DCOM的不足,为分布式企业应用提供了一种服务器端的构件运行和部署环境。 MTS是从NT4.0+ SP4的Option Pack开始,随Windows操作系统免费提供的。,COM+技术的发展历程 (续),随着因特网应用的日益广泛,企业级应用的体系结构越来越重要。为了使Windows真正成为企业应用平台,微软公司又推出了Windows DNA(Dis
32、tributed interNet Applications Architecture,分布式网络应用体系结构)。 Windows DNA是一个完整的、多层的新一代企业应用体系结构,它包含工具、数据库、操作系统、编程模型和应用服务等。 在新的企业应用体系结构下,微软公司希望进一步把COM、DCOM和MTS统一起来,形成真正适合于企业级应用的构件技术,这就是COM+。 COM+仍然以COM/DCOM为基础,包含了MTS。 COM+是一种中间件技术的规约,其要点是提供建立在操作系统上的、支持分布式企业级应用的“服务”。 COM+是在20世纪末随着Windows2000发布才面世的。,微软分布式网络
33、应用架构Windows DNA,Windows DNA是一个服务器端的开发平台,包含了以下产品: Windows NT/2000: 操作系统,为所有微软公司技术提供运行环境和支持。 DCOM: 支持分布式构件的核心技术。 MSMQ(Microsoft Message Queue): 消息队列产品,支持构件间的异步通信。 MTS(Microsoft Transaction Server): 管理构件的应用服务器。 Microsoft Wolfpack: 支持集群服务器的软件。 Microsoft SQL Server: 一个关系型数据库管理系统。 Microsoft IIS(Internet I
34、nformation Server): Web服务器。 Microsoft Management Console: 部署和管理工具。 COM+技术是以上产品(尤其是DCOM、MTS、还有MSMQ的一部分)的相互结合。,COM+的架构,COM+的核心是改进的COM/DCOM和MTS的集成,但是COM+增加了一些非常重要的构件服务,比如负载平衡、驻留内存数据库、事件模型、队列服务等。COM+ 还提供了一个比MTS 更好的构件管理环境COM+ Explorer,用来设置COM+应用和COM+构件的属性信息。另外,COM+还支持所谓的申述式编程模型(declarative programming mo
35、del),它允许开发人员以较通用的方式开发构件,而一些细节则留到部署时再确定。,COM+,COM+目录 负载平衡 驻留内存数据库 对象池 新的事件模型 构件管理和部署 JIT激活,事务支持 资源分发管理 安全模型 易于管理,MTS,COM,基于接口的编程模型 基本的构件服务,远程支持 分布式构件服务,DCOM,COM+主要特点,(1)真正的异步通信 COM+底层提供了队列构件服务,允许客户和构件进行异步通信。 (2)事件服务 新的事件机制利用系统服务简化了事件模型,避免了COM可连接对象机制的琐碎细节,使事件源和事件接收方实现事件功能更加灵活。 (3)灵活性 动态负载平衡以及驻留内存数据库、对
36、象池等系统服务为COM+的灵活性提供了技术基础。 (4)可管理和可部署性 COM+的申述式编程模型和构件管理环境支持应用系统在开发完成后的管理和部署。 (5)易于开发 COM+开发模型比以前的COM构件开发更为简化。,CORBA概述,CORBA:Common Object Request Broker Architecture,公共对象请求代理体系结构,由OMG制定的分布对象模型。要点:通过IDL定义接口,使用不同编程语言、不同编译器实现的构件,可以通过ORB连接,形成一个跨平台的应用。CORBA产品:CORBA是一套规约,而不是一个产品,开发商可以开发不同的产品来实现CORBA规约。著名的产
37、品有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,简称
38、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基准模型,应用对象,公共设施,对象服务,
39、对象请求代理ORB,该模型描述了分布式对象系统的基本成分,有四个主要层次: 应用对象(application objects)、公共设施(common facilities)、 对象请求代理(ORB)和对象服务(object services)。,OMA基准模型,1) 对象服务是一组系统级的对象,为实现和管理对象提供了基本的功能,包括名字、生存周期服务、事务服务、安全服务等等。 2) ORB是核心,它提供了一种机制,使得对象可以透明地发送请求和接受响应。 3) 公共设施是适用于众多应用领域的通用构件,例如信息管理、系统管理、任务管理和用户界面等。 4) 应用对象是专用于特定领域的应用构件,OM
40、G没有为它制定标准。,ORB的架构,ORB Core,GIOP / IIOP,Dynamic Invocation Interface,IDL Stube,Client,Interface Repository,Object Implementation,IDL Skeleton,Dynamic Skeleton Interface,ORB Interface,Implementation Repository,IDL Compiler,Operation(),输出参数+回送值,输入参数,CORBA应用开发,客户机程序开发者,ORB库,IDL compilier,客户机,客户机桩,服务器程序开
41、发者,ORB库,IDL compilier,服务器,服务器骨架,IDL,典型的CORBA应用开发过程,本节内容,概述 分布对象中间件 Web服务中间件,产生背景,Web Services的产生具有如下四个主要原因: 软件产业模式的发展从以产品为中心的制造业转变为以客户为中心的服务业 ; WWW的发展从两层体系转变为三层体系 ; B2B的发展从复杂专用转变为简单通用 ; 分布计算中间件的发展从Intranet到Internet,Web服务的概念,按照W3C的定义,Web服务是: 用URI标识的; 可通过标准Web协议存取的; 能接受,发送基于XML的消息,并按照行动; 能与应用和程序交互,不必通
42、过人驱动的用户界面,Web服务模型,Web 服务采用面向服务的概念计算模型,包括三类角色:服务提供者,服务用户和服务注册机构,Web服务的核心技术,SOAP、WSDL与UDDI是Web Service的三大核心技术 SOAP: 简单对象存取协议 SOAP是递交W3C的标准,它是一个RPC协议,用标准的互联网协议进行传输XML数据,以HTTP做同步调用,SMTP做异步调用。 WSDL: Web服务描述语言 WSDL也是递交W3C的标准,由Web服务描述它能做些什么,接受什么输入信息,以及响应返回什么。 UDDI: 通用描述,发现和集成 UDDI是Web Services的发布与发现的标准机制,它
43、于2000年9月由ARIBA、IBM和MICROSOFT三家公司共同提出。,SOAP,SOAP是一种基于XML的轻载协议,用于在松散的分布环境中对等地交换结构化和类型化的信息。SOAP本身并不涉及任何应用语义,如编程模型或特定语义实现,仅仅定义了将应用数据编码与打包的简单机制。这使得SOAP可被广泛应用于各类系统,如基于消息的系统或基于RPC的系统。 SOAP由四部分组成: SOAP编码规则:定义了一种数据序列化机制,用于交换应用定义的数据类型的实例。 SOAP信封:定义了一个完整的消息表示框架,用于表示消息中有什么、由谁处理、以及消息中的某些内容是可选的还是必须的。 SOAP的RPC表示:定
44、义了一种规则,用于表示RPC调用和响应。 SOAP绑定:定义了一种约定,用于在对等应用之间基于特定的底层传输协议交换SOAP信封。,WSDL,WSDL认为服务就是一组可进行消息交换的通信端点(endpoint)的集合。因此,一个WSDL文档将服务定义为一组端口(port)的结合。WSDL的数据类型分为两类:抽象数据类型包括消息、端口类型和操作;具体描述包括特定于协议与网络地址的绑定、端口和服务。,WSDL元素结构,UDDI,UDDI提供了一种分布式商业注册中心的机制,该商业注册中心维护了一个企业和企业提供的Web 服务的全球目录,而且其中的信息描述格式是基于通用的XML格式的。,UDDI数据结
45、构,Web 服务技术栈,W3C在2001年4月召开了第一次Web Services研讨会,通过一个技术栈描绘了Web Services相关技术。,Web Services技术栈,产品与应用,Web Services产品可分为独立平台和平台扩展两类。 独立平台是指那些专门为开发、部署、运行、管理Web Services而开发的独立产品,如HP Web Services Platform, WASP, GLUE等; 平台扩展则是扩展已有的应用服务器使之支持Web Services的开发、部署、运行和管理,如众多J2EE产品和.NET。 由于采用平台扩展方式的厂商大多是中间件产品领域的主导,如IBM
46、、SUN、BEA、Microsoft、Oracle等,因此,Web Services产品的主流模式是平台扩展。,.NET VS J2EE,微软.NET支持的通用Web Services体系,.NET VS J2EE,SUN主要通过一组新的API扩展J2EE以支持Web Services。这组API分为面向文档和面向过程两类,前者主要处理XML文档,后者则是围绕SOAP调用 , 其中: Java API for XML Processing (JAXP): 运行用户使用不同的解析器处理XML文档; Java Architecture for XML Binding (JAXB): 将XML文档中的各个元素按照层次关系映射成Java对象,从而简化XML文档的处理; Java API for XML Messaging (JAXM): 收发SOAP消息; Java API for XML Registries (JAXR): 支持UDDI。 Java API for XML-based RPC (JAX-RPC): 通过SOAP传输RPC调用和应答。,.NET VS J2EE,通过Web Services访问J2EE应用的典型流程,.NET VS J2EE,