WEB SERVICE

导读:

  WEB SERVICE

  Web Service是由 Worldwide Web Consortium(W3C)设计和指定的标准,主要用来促进跨平台的程序之间的通信。目前,Web Service标准主要包括三个部分:Web服务描述语言WSDL,简单对象访问协议SOAP以及统一描述、发现和集成(UDDI)。

  Web Service是一种分布式计算体系结构,被设计和制定用来促进跨平台的程序对程序的通信。一个Web Service是执行一个或一系列离散任务的软件模块,可以在网络上被检索和调用。开发人员可以开发客户程序通过远程过程调用RPC来调用一系列的实现一定应用逻辑的Web Service。Web Service使用SOAP和HTTP作为传输层传递XML数据(XML实际上是一种对信息和数据进行格式化的语言和语法)。

  WEB SERVICE架构

  Web Service架构有三个明确的角色:提供者、请求者和代理。提供者建立Web Service,并可以提供给请求者使用;请求者是消费Web Service的客户应用程序,被请求的Web Service同样可以是另一个Web Service的客户;代理提供了提供者和请求者之间交互的途径。

  提供者、请求者和代理之间通过发布、寻找和绑定来进行交互。提供者通过代理的发布接口来通知代理它可以提供一个已有的Web Service可以供客户使用,发布的信息对这个Web Service进行描述并指出它的位置。请求者询问代理以定位一个已经发布的Web Service,它通过代理获得的信息使它能够绑定和调用Web Service。

  XML技术

  XML XML(Extensible Markup Language,可扩展标记语言)是W3C(World Wide Web Consortium)定义的,描述了一类被称为XML文档的数据对象,是一个用来定义其他语言的元语言,它的前身是SGML,但XML更加简单易懂,它既没有标签集也没有语法,所以完全的可扩展性和灵活性就成了它的最大优势[18]。

  XML就其语言本身来讲是非常简单的,但我们所说的XML并非只是其语言本身,还包括对它的操作和使用所涉及的相关技术,如DTD、PI、XSL、XSLT、XPath、DOM、SAX、JAXP、XML模式等等。下面我们先对这些相关技术及其相互间的联系做个简单的介绍。

  DTD DTD(Document Type Definition 文档类型定义)是为一个XML文档(或一个文档集合)建立的一套规则。DTD规定了XML文档的构建方式,如果文档符合DTD的XML数据格式限制,文档就是有效的,这个过程是通过XML解析器来完成的,它在两个应用程序中传递数据时是非常重要的,因为要使不同的系统能相互识别,就必须保证系统有通用的格式及句法。事实上,XML数据的可移植性就是由DTD带来的。

   namespace namespace(名字空间)就是一个元素前缀与URI(同一资源标示符)之间的一种映射关系。它可以用来处理名字空间冲突,定义可以允许解析器处理冲突的数据结构。它是用一个XML元素加一个前缀组成的,XML解析器就可以区分不同名字空间的相同元素名字。

   XSL和XSLT XSL(Extensible Stylesheet Language 可扩展样式表语言)能够改变及转换一种XML的XML数据,使其变为另一种XML格式。XSL提供一个已定义好的样式表,它可以把一个XML文档用不同形式表示出来(HTML、PDF或者Postscript等),使数据或文档内容与表示形式相透明。另外XSLT是一个完全基于文本的转换过程,在这个过程中,一个XSL文本样式表和一个XML文本文档将被合并处理,最终使XML数据按照XSL类型而被格式化。

   Xpath XPath(XML Path Language XML路径语言)是一个独立的技术规范,它通过参考XML文档中的特定节点定义了一个XML文档中的特定条目该如何定位。一个XML文档被认为是一个节点树,树中的每个节点都可以通过详细描述该节点在树中的位置来进行存取操作。它在XSLT中被大量的使用。

   XML模式 XML模式(Schema)是被设计用来代替和增强DTD的,将DTD和XML本身相提并论,它提供了一种以XML为中心的方式限制XML文档。

   XQL XQL是被设计用来允许XML文档格式轻松的描述数据库查询的一种查询语言,查询的结构是通过使用Xpath的概念定义的,其查询结果是用带有XQL专用标签的标准XML定义的。

   SAX SAX(Simple API for XML 简单API)提供了一个用来解析XML数据的基于事件的框架,它先扫描整个文档,并将数据拆解成几个有用部分的一种处理过程。SAX是提供和解析XML数据的一种方法,为解析器提供了一个可用的框架,定义了解析过程中用于监视的事件,它必须要有一个解析器来执行XML解析,插入SAX API,并产生解析过的数据。所以,SAX API为文档解析提供的是方法,而不是XML解析器本身。

   DOM DOM(Document Object Model 文档对象模型)提供操作XML文档数据的一种方式,而SAX只是在一个XML文档范围内为数据提供通路。DOM将整个XML文档读入内存,并把它描述成一棵树,将所有的数据储存在节点中,每个节点代表着文档中的一段数据,这使得整个文档可以快速的使用。但是DOM将整个文档都读入内存,资源负债会很重,这会造成应用程序运行缓慢甚至瘫痪,所以,如果待处理的XML文档很大时,最好避免DOM的使用,而使用其他的方法,如SAX。

   JAXP JAXP(Java API for XML Parsing , XML解析Java API )是XML开发类库德新类,为SAX和DOM的API提供核心。它遵循SAX和DOM技术规范和名字空间的推荐标准,增加了一些方便的函数,以使得XML API易于在Java开发环境中使用。它保证在Java应用程序中,所有的XML规则解析器能够通过一个标准可插入层访问。

   XML解析器 XML解析器是XML应用程序中最重要的一层,它处理并检查一个原始XML输入文档,以保证文档是符合格式要求的,并且如果引用了一个DTD或模式,它将能够保证文档的有效性。文档经解析器处理后将产生一种基于Java的数据结构,以易于被其他XML工具或Java API操作和处理。

  XML Java是可移植的代码,XML是可移植的数据。XML从一开始就和Java在一起,Java提供了一套完整的API集合,使得XML可直接在Java代码中使用。这两种技术都是很好的技术,但是都有各自的局限性。Java要求开发者自行安排网络数据格式及其表示形式,并不把内容层和表示层真正分离,XML只是元数据,如果脱离了类似解析器和XSL处理器这样的程序,也就没有用了,当Java和XML结合使用后,就互相弥补了不足,发挥极其强大的威力,应用程序和数据会更加可移植,会被大量的使用。

  XML最流行的用法是创建内容与表现形式的分离,将应用程序的内容定义为需要为客户方显示的数据,将应用程序的表示定义为数据的格式。对于一个应用程序来说,内容是普遍存在的,不论出现什么类型的客户方专有格式,只要内容相同就有效,而表示对应于客户类型及其浏览数据的能力,这样XML将被用来描述内容,而XSL和XSLT将用来提供适合客户方的表示。虽然XML不是一种表示技术,但XML和XSL却是用于表示的最强大的组件,它们指定XML文档中的众多样式表,或将XSL样式表加载到XML文档的这种能力,就又为表示增加了一层灵活性。

  XML文档和它的数据内容能够被用来在两个应用中传递信息,这种通信是非常容易的,因为XML数据并不与任何类型的客户方拴在一起,甚至并不被客户方使用,它提供了一种很容易在网络上传递的非常简单的一种数据表示方式。XML又是一个纯文本的数据描述,而文本是一种可移植和容易排序的数据描述形式,所以网络文本传输必将超过二进制数据的传输,成为一种更快速的通信方式。

  XML-RPC是与使用XML进行通信相关的一种技术规范,是一个应用程序中的两个组件或者应用程序间共享的服务集之间的通信,它是RMI中的一个主要预处理器,用来在网络上生成程序调用,并在网络上接收回应。客户方从不直接和远程对象相互作用,而是使用RPC接口来发出函数调用请求,而RMI则是客户方通过加载网络上的存根和框架,来调用一个对象方法,它允许客户方直接和远程对象交互。由于采用文本文档描述数据类型是采用一个标准,XML-RPC引擎能够将一个对象实例的参数映像到一个XML元素,并且可以很容易的在服务器上对该映像进行解码,就产生了一个应答,并且再次被转换成XML,返回给客户方。它将成为远程服务调用的主导。

  XML还有一个重要的用途就是在应用程序服务器层,EJB规范要求对EJB的内部格局必须用XML来描述,包括EJB的行为及其他EJB信息。在EJB领域,通过要求内部配置描述符符合一个重新定义过的DTD,任何人都可以使用同一个XML内部配置描述符,这就增加了EJB的可移植性。

  XML是一项伟大的技术,它带来了一种完全可移植的数据格式,定将会改变今后创建应用程序的方式。

  SOAP技术

  SOAP(Simple Object Access Protocol) 是一个独立于传输协议的消息协议,每个SOAP消息是一个XML文档。尽管使用上常常是以请求-应答方式出现,SOAP使用的仍然是单向消息。

  SOAP是在XML基础上定义的,完全继承了XML的开放性和描述可扩展性。SOAP使用现有基于TCP/IP的应用层协议 HTTP、SMTP、POP3等,可以获得与现有通信技术最大程度地兼容。SOAP的消息路径机制和可扩充的Header和Body机制又为分布式计算提供了很好的支持。

  SOAP规范定义了XML消息的格式,但没有定义消息的内容和实际传输方式。

  SOAP为在一个松散的、分布的环境中使用XML对等地交换结构化的和类型化的信息提供了一个简单的轻量级机制。SOAP本身并不定义任何应用语义,如编程模型或特定语义实现,它只是定义了一种简单的机制,通过一个模块化的包装模型和对模块中特定格式编码的数据重编码机制来表示应用语义。SOAP的这项能力使得它可被很多类型的系统用于从消息系统到RPC(Remote Procedure Call)的延伸。

  SOAP规范主要由三部分组成:

  (1) SOAP信封(envelop),它构造定义了一个整体的SOAP消息表示框架,可用于表示消息中的内容是什么,是谁发送的,谁应当接受并处理它,以及这些处理操作是可选的还是必须的等。

  (2) SOAP编码规则(encoding rules),定义了一个数据的编码机制,通过这样一个编码机制来定义应用程序中需要使用的数据类型,并可用于交换由这些应用程序定义的数据类型所衍生的实例。例如可能应订单服务的需要,使用SOAP编码规则定义了订单的数据类型,并可以在订单生成的客户端与订单服务之间交换订单实例。

  (3) SOAP RPC表示(RPC representation),定义了一个用于表示远端过程调用和响应的约定,例如如何使用HTTP或SMTP协议与SOAP绑定,如何传输过程调用,在具体传输协议的哪个部分传输过程响应,如我们可以在HTTP的响应的时候传递过程响应。

  虽然这三部分是作为SOAP的不同部分作为一个整体定义的,但他们在功能上是正交的、彼此独立的。特别的,信封和编码规则是被定义在不同的XML命名空间(namespace)中,这样有利于通过模块化获得定义和实现的简明性。



本文转自

http://soa.5d6d.com/redirect.php?fid=7&tid=69&goto=nextoldset
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值