收藏 分享(赏)

接口技术学习总结(1).ppt

上传人:yjrm16270 文档编号:8149450 上传时间:2019-06-11 格式:PPT 页数:75 大小:801KB
下载 相关 举报
接口技术学习总结(1).ppt_第1页
第1页 / 共75页
接口技术学习总结(1).ppt_第2页
第2页 / 共75页
接口技术学习总结(1).ppt_第3页
第3页 / 共75页
接口技术学习总结(1).ppt_第4页
第4页 / 共75页
接口技术学习总结(1).ppt_第5页
第5页 / 共75页
点击查看更多>>
资源描述

1、接口技术,福建富士通信息软件有限公司,Fujian Fujitsu Communication Software Co., Ltd.(FFCS),二一一年 九月八日,主流接口技术,1,2,3,XML解析技术,Webservice介绍,内容提要,4,Webservice框架,主流接口技术,WEB Service Corba EJB 消息队列 FTP HTTP Socket 中间表,WEB Service,基于HTTP 传递xml 定义的SOAP 协议数据,是开 放的标准,标准性高,扩展性好。 优点: 因为是基于HTTP 协议,耦合度低,可以方便穿 越防火墙,目前有大量成熟应用,接口开发有很多支持

2、工具和环境,开发工作量较低。 缺点: 性能方面相对于中间件服务调用较低,Corba,系统向外提供 Corba 服务,客户端直接调用。 优点: 跨平台、跨系统、跨语言,性能很高,比较稳定,扩展性良好。 缺点: Corba 产品不十分成熟、系统间耦合度增高,而且对于外部系统之间客户端开发接口以及调试工作量相对大一些,适用于实时性要求比较高的场合接口,EJB,系统向外提供服务供客户端直接调用。 优点: 性能很高,有成熟产品支持,可靠稳定,扩展性良好。 缺点: 系统间耦合度增高,而且对于外部系统之间客户端开发接口以及调试工作量相对大一些,十分适用于系统内部子系统之间的接口,中间表,这种方式是通过数据库

3、中间表获取系统的数据,将相关的数据同步到其他系统。 优点: 接口实现简单,效率高, 缺点: 系统间耦合度较高,对双方系统的稳定性以及接口的稳定性要求较高。,接口分类,接口调用方式 同步:调用方在调用接口后必须在接口的结果返回后才可以继续执行自己的任务 异步:调用方在调用接口后不需要等待接口的结果返回,可以继续执行自己的任务 接口交互方式 实时:接口的响应速度有很高要求,通常要求接口处理能在秒级完成 非实时:调用者对接口执行速度要求不太高。 接口数据量大数据量:指大量数据传输,通常是批量数据; 小数据量:接口数据量偏小,一般小于 100K 的数据包 接口频率非周期:接口不按固定周期交互,通常为事

4、件触发,比如查询; 周期:接口按固定周期,比如按日、按周、按月、按小时、按分钟或其他频率交互。,corba,ejb ,webservice的区别,Corba,EJB 共同点: 通过专有的网络协议通讯 不能跨平台调用 通过分布式对象调用来实现分布式架构,分布式架构是绑定在面向对象的机制上的分布式对象架构的缺陷在EJB2时代被充分暴露了出来 web services有一些明显不同于Corba和EJB分布式对象架构的特征: 通过标准SOAP协议通讯,一般走HTTP通道 能够跨平台调用 通讯格式是xml文本,而不是二进制数据格式 通过RPC(Remote Procedure Call Protocol

5、)机制来实现分布式调用,而不是通过面向对象机制实现分布式调用 RPC是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。,选择接口技术,同步实时小数据量 WEB SERVICE、CORBA 异步非实时小数据量 接口表、WEB SERVICE 异步非实时大数据量 接口表、FTP,主流接口技术,1,2,3,XML解析技术,Webservice介绍,内容提要,4,Webservice框架,XML解析技术,XML解析技术分析 所有的XML处理都从解析开始,无论是使用XSLT或Java语言,第一步都是要读入XML文件,解码结构和检索信息等等,这就是解析,即把代表XML文档的一个无结

6、构的字符序列转换为满足XML语法的结构化组件的过程。 XML解析技术的分类 面向文档的流式解析; 面向文档的对象式解析; 面向文档的指针式解析; 面向应用的对象式解析;,面向文档的流式解析技术,流式解析是一种基于事件的解析过程,解析器顺序读取XML文档,产生一个对应的事件流,并向事件处理程序发送所捕获的各种事件,如元素开始和元素结束等,而事件处理程序则通过不同的方法处理这些事件。 流式解析是将XML文档作为一个数据流来处理,因此,它具有类似于流媒体的优点,能够立即开始读取数据,而不是等待所有的数据被处理。而且,由于应用程序只是在读取数据时检查数据,不需要将整个文档一次加载到内存中,使得在处理大

7、型文档时具有较好的时间和空间上的效率。然而效率的代价是易用性的降低,流式解析编程较为复杂,程序员需要负责更多的操作。并且由于应用程序没有以任何方式存储数据,所以使得更改数据或在数据流中往后移是不可能的。再加上它的单遍解析特性,意味着它也不支持随机访问。 流式解析又分为两种解析方式:推式解析(SAX)和拉式解析(StAX)。这两种方式的主要区别在于是由解析器还是应用程序控制读循环(读入文件的循环)。 拉式解析: 在这种解析方式中,应用程序控制着读循环。循环中,应用程序负责反复调用解析器获得下一个事件,直到文档结束。 推式解析: 在这种解析方式中,解析器控制着读循环,在文档结束之前控制权不会返回给

8、应用程序。解析器通过回调的方式进行数据处理。,java常用的XML解析技术,DOM(Document Object Model) W3C 里边一种成熟的标准。 SAX (Simple API for XML) 一种被广泛接受的 XML 的 API ,成为事实上的标准 。 StAX (Streaming API for XML) 在 JSR-173 中提到的一种很有前途的新型解析模型。按照解析方式可分为: 基于树(tree-based), DOM 基于事件(event-based), SAX, StAX,DOM解析技术,DOM解析是面向文档的对象式解析技术 DOM解析器把XML文档转化为一个包含

9、其内容的树,并可以对树进行遍历。 DOM是用与平台和语言无关的方式表示XML文档的官方W3C标准。DOM是以层次结构组织的节点或信息片断的集合。这个层次结构允许开发人员在树中寻找特定信息。分析该结构通常需要加载整个文档和构造层次结构,然后才能做任何工作。由于 它是基于信息层次的,因而DOM被认为是基于树或基于对象的。 DOM 以及广义的基于树的处理具有几个优点。首先,由于树在内存中是持久的,因此可以修改它以便应用程序能对数据和结构作出更改。它还可以在任何时候在树中上下导航,而不是像SAX那样是一次性的处理。DOM使用起来 也要简单得多。 DOM解析模型的优点是编程容易,开发人员只需要调用建树的

10、指令,然后利用 navigation APIs访问所需的树节点来完成任务。可以很容易的添加和修改树中的元素。然而由于使用 DOM解析器的时候需要处理整个XML文档,所以对性能和内存的要求比较高,尤其是遇到很大的XML文件的时候。由于它的遍历能力,DOM解析器常用于 XML文档需要频繁的改变的服务中。,SAX解析技术,SAX 采用了“推模式”( push modal )解析 SAX解析器采用了基于事件的模型,它在解析XML文档的时候可以触发一系列的事件,当发现给定的tag的时候,它可以激活一个回调方法,告诉该方法制定的标签已经找到。SAX对内存的要求通常会比较低,因为它让开发人员自己来决定所要处

11、理的 tag.特别是当开发人员只需要处理文档中所包含的部分数据时,SAX这种扩展能力得到了更好的体现。但用SAX解析器的时候编码工作会比较困难,而且很难同时访问同一个文档中的多处不同数据。 SAX 处理的优点非常类似于流媒体的优点。分析能够立即开始,而不是等待所有的数据被处理。而且,由于应用程序只是在读取数据时检查数据,因此不需要将数据存储在内存中。这对于大型文档来说是个巨大的优点。事实上,应用程序甚至不必解析整个文档;它可以在某个条件得到满足时停止解析。一般来说,SAX还比它的替代者DOM快许多。,STAX解析技术,StAX 是一种令人振奋的新型解析技术,和 SAX 一样,它也采用了事件驱动

12、模型。不过,在对于事件的处理上, SAX 采用了“推模式”( push modal ),而 StAX 则使用的是“拉模式”( pull model )。从这个原理来判断的话, StAX 的实现显然要更加灵活,程序可以选择自己需要处理的部分,而 SAX 则一定会遍历整个文档。将 StAX 叫成“程序驱动模型”可能更利于理解一些。 优点: 接口简单,使用方便。 采用流模型分析方式,有较好的性能。 缺点: 单向导航,不支持XPath,很难同时访问同一文档的不同部分。,选择解析技术,为了比较这五种方式在解析XML文档时的性能表现,创建了三个不同大小的XML文档:(100KB)、 (1MB)、(10MB

13、)。分别用以上解析方式对这三个XML进行解析,然后打印出所有的用户信息,并分别计算它们所用的时间。测试代码会在文章后面的附件中给出,这里只比较它们的耗时。 由上面的测试结果可以看出,性能表现最好的是SAX,其次是StAX Stream和StAX Event,DOM和DOM4J也有着不错的表现。性能最差的是JDOM。所以 如果你的应用程序对性能的要求很高,SAX当然是首选。 如果你需要访问和控制任意数据的功能,DOM是个很好的选择,而对Java开发人员来讲,DOM4J是更好的选择。 如果只需要做XML文档解析的话,综合性能、易用性、面向对象特征等各方面来衡量,StAX Event无疑是最好的选择

14、。,主流接口技术,1,2,3,XML解析技术,Webservice介绍,内容提要,4,Webservice框架,WebService简介,Webservice是描述一些操作(利用标准化的 XML 消息传递机制可以通过网络访问这些操作)的接口。存在于互联网当中的组件,具有独立性,跨平台和技术,通过URL进行定位调用Webservice体系结构基于三种角色(服务提供者、服务注册中心和服务请求者)之间的交互。交互涉及发布、查找和绑定操作。,WebService的功能,WebService是一种跨编程语言和跨操作系统平台的远程调用技术 所谓远程调用,就是一台计算机a上的一个程序可以调用到另外一台计算机

15、b上的一个对象的方法,譬如,银联提供给商场的pos刷卡系统(采用交互提问的方式来加深大家对此技术的理解)。 远程调用技术有什么用呢?商场的POS机转账调用的转账方法的代码是在银行服务器上,还是在商场的pos机上呢? 什么情况下可能用到远程调用技术呢?例如,amazon,天气预报系统,淘宝网,校内网,百度等把自己的系统服务以webservice服务的形式暴露出来,让第三方网站和程序可以调用这些服务功能,这样扩展了自己系统的市场占有率,往大的概念上吹,就是所谓的SOA应用。 所谓跨编程语言和跨操作平台,就是说服务端程序采用java编写,客户端程序则可以采用其他编程语言编写,反之亦然!跨操作系统平台

16、则是指服务端程序和客户端程序可以在不同的操作系统上运行。 除了WebService外,常见的远程调用技术还有RMI(Remote method invoke)和CORBA,由于WebService的跨平台和跨编程语言特点,因此比其他两种技术应用更为广泛,但性能略低。,WebService的调用原理,WebService使用SOAP协议实现跨编程语言和跨操作系统平台 WebService采用HTTP协议传输数据,采用XML格式封装数据(即XML中说明调用远程服务对象的哪个方法,传递的参数是什么,以及服务对象的返回结果是什么)。WebService通过HTTP协议发送请求和接收结果时,发送的请求内

17、容和结果内容都采用XML格式封装,并增加了一些特定的HTTP消息头,以说明HTTP消息的内容格式,这些特定的HTTP消息头和XML内容格式就是SOAP协议(simple object access protocol,简单对象访问协议) 。 SOAP协议 = HTTP协议 + XML数据格式 SOAP协议是基于HTTP协议的,两者的关系就好比高速公路是基于普通公路改造的,在一条公路上加上隔离栏后就成了高速公路。 商店的服务员只要收到了钱就给客户提供货物,商店服务员不用关心客户是什么性质的人,客户也不用关心商店服务员是什么性质的人。同样, WebService客户端只要能使用HTTP协议把遵循某种

18、格式的XML请求数据发送给WebService服务器, WebService服务器再通过HTTP协议返回遵循某种格式的XML结果数据就可以了,WebService客户端与服务器端不用关心对方使用的是什么编程语言。 HTTP协议和XML是被广泛使用的通用技术,各种编程语言对HTTP协议和XML这两种技术都提供了很好的支持,WebService客户端与服务器端使用什么编程语言都可以完成SOAP的功能,所以,WebService很容易实现跨编程语言,跨编程语言自然也就跨了操作系统平台。,WebService框架的底层实现原理,各类WebService框架的本质就是一个大大的Servlet,当远程调用

19、客户端给它通过http协议发送过来soap格式的请求数据时,它分析这个数据,就知道要调用哪个java类的哪个方法,于是去查找或创建这个对象,并调用其方法,再把方法返回的结果包装成soap格式的数据,通过http响应消息回给客户端。,WebService的工作过程,UDDI注册中心,天气WebService,WebService消费者,1 创建Web Service, 定义WSDL;部署Web Service, URI标识;,股票WebService,2 把自己注册到UDDI via SOAP,WebService消费者,3 查找Web Service via SOAP,4 使用Web Serv

20、ice via SOAP,(替代2和3)直接告知WSDL的URL,WebService提供者,WebService的开发应用,WebService开发可以分为服务器端开发和客户端开发两个方面: 把公司内部系统的业务方法发布成WebService服务,供远程合作单位和个人调用。(借助一些WebService框架可以很轻松地把自己的业务对象发布成WebService服务,Java方面的典型WebService框架包括:axis,xfire,cxf等,java ee服务器通常也支持发布WebService服务,例如JBoss。这框架应用不是学习的重点,看看相关的技术手册都很轻松地掌握,关键还是要了解

21、WebService的工作原理。) 调用别人发布的WebService服务,大多数人从事的开发都属于这个方面,例如,调用天气预报WebService服务。(使用厂商的WSDL2Java之类的工具生成静态调用的代理类代码;使用厂商提供的客户端编程API类;使用SUN公司早期标准的jax-rpc开发包;使用SUN公司最新标准的jax-ws开发包。),WebService的客户端编程原理,我们给这各类WebService客户端API传递wsdl文件的url地址,这些API就会创建出底层的代理类,我调用这些代理,就可以访问到webservice服务。代理类把客户端的方法调用变成soap格式的请求数据再

22、通过HTTP协议发出去,并把接收到的soap数据变成返回值返回。,WebService优缺点,WebService优点 Webservice的互操作性,平台无关性。 Webservice的SOAP协议是基于XML和HTTP这些业界的标准的,得到了所有的重要公司的支持。 由于使用了SOAP,数据是以ASCII文本的方式而非二进制传输,调试很方便;并且由于这样,它的数据容易通过防火墙,不需要防火墙为了程序而单独开一个“漏洞”。 WebService实现的技术难度要比CORBA和DCOM小得多。 要实现B2B集成,EDI比较完善与比较复杂;而用WebService则可以低成本的实现,小公司也可以用上

23、。 在C/S的程序中,WebService可以实现网页无整体刷新的与服务器打交道并取数。 WebService缺点 WebService使用了XML对数据封装,会造成大量的数据要在网络中传输。 WebService规范没有规定任何与实现相关的细节,包括对象模型、编程语言,这一点,它不如CORBA。,WEB SERVICE 术语,XML,XML(eXtensible Markup Language) 扩展标记语言 XML是一种简单的数据存储语言,使用一系列简单的标记描述数据,而这些标记可以用方便的方式建立。 虽然XML占用的空间比二进制数据要占用更多的空间,但XML极其简单易于掌握和使用。,XS

24、D,XSD是 XML结构定义 ( XML Schemas Definition )。 XSD是DTD的替代品。描述了XML文档的结构。 可以用一个指定的XSD来验证某个XML文档,以检查该XML文档是否符合其要求。 文档设计者可以通过XSD指定一个XML文档所允许的结构和内容,并可据此检查一个XML文档是否是有效的。 XSD本身是一个XML文档,它符合XML语法结构。可以用通用的XML解析器解析它。 一个XSD会定义:文档中出现的元素、文档中出现的属性、子元素、子元素的数量、子元素的顺序、元素是否为空、元素和属性的数据类型、元素或属性的默认和固定值。 XSD是DTD替代者的原因, 一是据将来的

25、条件可扩展, 二是比DTD丰富和有用, 三是用XML书写, 四是支持数据类型, 五是支持命名空间。 XSD文件的后缀名为.xsd。,SOAP,SOAP(Simple Object Access Protocol)简单对象访问协议。 SOAP是一种轻量的、简单的、基于 XML 的协议,它被设计成在Web 上交换结构化的和固化的信息。 SOAP 可以和现存的许多因特网协议和格式结合使用,包括超文本传输协议( HTTP),简单邮件传输协议(SMTP),多用途网际邮件扩充协议(MIME)。它还支持从消息系统到远程过程调用(RPC)等大量的应用程序。 SOAP 包括三个部分: SOAP 封装:它定义了一

26、个框架 , 该框架描述了消息中的内容是什么,谁应当处理它以及它是可选的还是必须的。 SOAP 编码规则:它定义了一种序列化的机制,用于交换应用程序所定义的数据类型的实例。 SOAP RPC 表示:它定义了用于表示远程过程调用和应答的协定。 SOAP 消息基本上是从发送端到接收端的单向传输,但它们常常结合起来执行类似于请求 / 应答的模式。所有的 SOAP 消息都使用 XML 编码。一条 SOAP 消息就是一个包含有一个必需的 SOAP 的封装包,一个可选的 SOAP 标头和一个必需的 SOAP 体块的XML 文档。 把 SOAP 绑定到 HTTP 提供了同时利用 SOAP 的样式和分散的灵活性

27、的特点以及HTTP 的丰富的特征库的优点。在 HTTP 上传送 SOAP 并不是说 SOAP 会覆盖现有的 HTTP 语义,而是 HTTP 上的SOAP 语义会自然的映射到 HTTP 语义。在使用 HTTP 作为协议绑定的场合中, RPC 请求映射到 HTTP 请求上,而 RPC 应答映射到 HTTP 应答。然而,在 RPC 上使用 SOAP 并不仅限于 HTTP 协议绑定。,WSDL,WSDL(webservice description language)是基于XML格式的,它是WebService客户端和服务器端都能理解的标准格式,其中描述的信息可以分为what,where,how等部分

28、! 好比我们去商店买东西,首先要知道商店里有什么东西可买,然后再来购买,商家的做法就是张贴广告海报。 WebService客户端要调用一个WebService服务,首先要有知道这个服务的地址在哪,以及这个服务里有什么方法可以调用,所以,WebService务器端首先要通过一个WSDL文件来说明自己家里有啥服务可以对外调用,服务是什么(服务中有哪些方法,方法接受的参数是什么,返回值是什么),服务的网络地址用哪个url地址表示,服务通过什么方式来调用。 WSDL文件保存在Web服务器上,通过一个url地址就可以访问到它。客户端要调用一个WebService服务之前,要知道该服务的WSDL文件的地址

29、。 WebService服务提供商可以通过两种方式来暴露它的WSDL文件地址: 注册到UDDI服务器,以便被人查找 直接告诉给客户端调用者,例如,在自己网站给出信息或邮件告诉。,UDDI,UDDI(Universal Description, Discovery and Integration)统一描述、发现和集成协议 UDDI是为解决Web服务的发布和发现问题而制订的新一代基于Internet的电子商务技术标准。 包含一组基于Web的、分布式的Web服务信息注册中心的实现标准,以及一组使企业能将自己提供的Web服务注册到该中心的实现标准。,主流接口技术,1,2,3,XML解析技术,Webse

30、rvice介绍,内容提要,4,Webservice框架,Apache - Axis2(Apache EXtensible Interaction System ),Apache - Axis2,Axis2简介,Apache Axis2 是 Apache Axis SOAP 项目的后继项目。此项目是 Web 服务核心引擎的重要改进,目标是成为 Web 服务和面向服务的体系结构(Service-Oriented Architecture,SOA)的下一代平台。作为一个干净的可扩展的开放源代码 Web 服务平台,它正逐渐受到广泛的关注。Axis2 的体系结构高度灵活,支持很多附加功能,如可靠消息传递

31、和安全性等。 Axis本质上就是一个SOAP引擎,提供创建服务器端、客户端和网关SOAP操作的基本框架。 AXIS2支持更广泛的数据并对,如XMLBeans,JiBX,JaxMe和JaxBRI和它自定义的数据绑定ADB; Axis2支持多语言-除了Java,他还支持C/C+版本; Axis2允许自己作为独立的应用来发布Web Service,并提供了大量的功能和一个很好的模型,这个模型可以通过它本身的架构(modular architecture)不断添加新的功能。 Axis2 将不会对 Web 服务概念进行验证,而将提供更好的 SOAP 处理模型,且与 Axis 1.x 及其他现有 Web

32、服务引擎相比,其速度和内容方面的性能都得到很大的提高。此外,它还为用户提供了方便的 API,用于部署服务、扩展核心功能和新客户机编程模型。现在已经进入了 Axis2 的时代了。,Axis2体系结构,Axis2 具有模块化体系结构,由核心模块和非核心模块组成。据说,Axis2 核心是纯 SOAP 处理引擎,并没有包含 Java API for XML-based RPC (JAX-RPC) 概念作为其核心的一部分。 Axis2 体系结构的设计充分考虑了以下原则: 逻辑和状态分离,以提供无状态处理机制,因为 Web 服务是无状态的。 所有信息位于一个信息模型中,允许对系统进行挂起和恢复。 能够在不

33、更改核心体系结构的情况下扩展功能,能以最小或没有核心更改的情况下直接支持新 Web 服务规范。 核心组件 XML 对象模型 (AXIOM) SOAP 处理模型:处理程序框架 信息处理模型:上下文和描述 其他组件 部署模型 传输 客户机 API 核心生成模型,Axis2 体系结构关系图,Axis2主要特性,Axis2 不仅是 Apache 的新 Web 服务框架。它还体现了从 Axis 1.x 系列获得的经验和最近两年在 Web 服务领域的发展。推出 Axis2 的主要原因之一是从速度和内存方面获得更好的性能不过还添加了一些新特性和功能。大部分新特性都是为了提高 Axis2 的易用性,并同时保留

34、通过各种方式扩展功能的空间。大部分新功能所添加到的主要领域如下所示: 新 XML 对象模型 (AXIOM) AXIOM 是一个 XML 对象模型,设计用于提高 XML 处理期间的内存使用率和性能,基于 Pull 解析。通过使用 Streaming API for XML (StAX) Pull 解析器,AXIOM(也称为 OM)可以控制解析过程,以提供延迟构建支持。延迟构建是指 AXIOM 不完全构建对象模型,模型的其余部分基于用户的需求构建。 基于消息传递的核心 Axis2 是一个纯 SOAP 处理器,并不依赖于任何 Java 特定的规范。例如,JAX-WS 将作为 Axis2 上的一个层实

35、现,而不会进入核心部分中。,Axis2主要特性,经过改进的部署模型 Axis2 现在支持将服务热部署到 Axis2 引擎中。这就允许用户在不用重新启动服务器的情况下部署服务。服务应该存档为 ZIP 文件,且在文件名中使用 .aar(Axis2 存档,Axis2 archive)作为扩展名。 可插入模块体系结构模块为服务器提供了一个扩展机制。Axis2 中的每个模块都包含一组相关的处理程序。例如,WS-Addressing 模块将包含一组为 Axis2 引擎提供 WS-Addressing 支持的处理程序。Axis2 管理员可以下载 WS-Addressing 模块,并将其部署到 Axis2 引

36、擎中,从而为 Axis2 引擎添加 WS-Addressing 支持。module.xml 文件包含指定处理程序应属于哪个管道和阶段的规则。 可插入数据绑定 在纯 SOAP 级别上工作有时候比较麻烦,因此大部分用户更喜欢使用 Java 代码,而让框架处理 XML 和 Java 代码间的转换。这称为数据绑定。有很多数据绑定框架可用,用户会因为各种不同的原因而偏好使用某个框架。Axis2 支持目前可用的大部分数据绑定框架,而且没有任何限制。例如,Axis2 内置了对 XMLBeans、JAXB 和 JiBX 的支持,用户可以选择使用其中任何一个。任何其他数据绑定框架都可以方便地插入。,Axis2主

37、要特性,新客户机 API Axis2 可以采用两种方式调用 Web 服务。ServiceClient API 是最简单的方法,但为用户提供的控制较少。OperationClient API 在调用期间提供了大量的控制。这两个 API 都内置了基本 In-Out 和 In-Only MEP。Axis2 现在同时支持阻塞和非阻塞调用模型。非阻塞调用在设计用户界面时以及服务调用非常费时的情况下很有用。 REST 支持随着 Web 2.0 的推出,代表性状态传输(REpresentational State Transfer,REST)得到了认可。一段时间以来,REST 阵营和 SOAP 阵营一直在就

38、使用哪个规范进行激烈的争论。我们尝试在 Axis2 中同时支持二者,采用了 WSDL 2.0 中将 REST 与 Web 服务结合的工作成果。在 Axis2 中,用户可以调用 Axis2 引擎中采用 REST 方式部署的所有 Web 服务,但受到 WSDL 2.0 HTTP Bindings 规范中定义的约束的限制。,sun JAX-WS,sun JAX-WS,概述,JAX-WS2.0 (JSR 224)是Sun新的web services协议栈,是一个完全基于标准的实现。在binding层,使用的是the Java Architecture for XML Binding (JAXB, JS

39、R 222),在parsing层,使用的是the Streaming API for XML (StAX, JSR 173),同时它还完全支持schema规范。 Sun最开始的web services的实现是JAX-RPC 1.1 (JSR 101)。这个实现是基于Java的RPC,并不完全支持schema规范,同时没有对Binding和Parsing定义标准的实现。 JAX-WS规范是一组XML web services的JAVA API。JAX-WS允许开发者可以选择RPC-oriented或者message-oriented 来实现自己的web services。,在 JAX-WS中,一

40、个远程调用可以转换为一个基于XML的协议例如SOAP。在使用JAX-WS过程中,开发者不需要编写任何生成和处理SOAP消息的代码。JAX-WS的运行时实现会将这些API的调用转换成为对应的SOAP消息。 在服务器端,用户只需要通过Java语言定义远程调用所需要实现的接口SEI (service endpoint interface),并提供相关的实现,通过调用JAX-WS的服务发布接口就可以将其发布为WebService接口。 在客户端,用户可以通过JAX-WS的API创建一个代理(用本地对象来替代远程的服务)来实现对于远程服务器端的调用。 当然 JAX-WS 也提供了一组针对底层消息进行操作

41、的API调用,你可以通过Dispatch 直接使用SOAP消息或XML消息发送请求或者使用Provider处理SOAP或XML消息。 通过web service所提供的互操作环境,我们可以用JAX-WS轻松实现JAVA平台与其他编程环境(.net等)的互操作。,JAX-WS(JSR-224) 是Java Architecture for XML Web Services的缩写,简单说就是一种用Java和XML开发Web Services应用程序的框架, 目前版本是2.0, 它是JAX-RPC 1.1的后续版本, J2EE 1.4带的就是JAX-RPC1.1, 而Java EE 5里面包括了JA

42、X-WS 2.0,但为了向后兼容,仍然支持JAX-RPC. 现在,SUN又把JAX-WS直接放到了Java SE 6里面,由于JAX-WS会用到Common Annotation(JSR 250),Java Web Services Metadata(JSR 181), JAXB2(JSR 222), StAX(JSR 173), 所以SUN也必须把后几个原属于Java EE范畴的Components下放到Java SE, 现在我们可以清楚地理解了为什么Sun要把这些看似跟Java SE没有关系的Components放进来,终极目的就是要在Java SE里面支持Web Services.,JA

43、X-WS2.0的架构,JAX-WS不是一个孤立的框架,它依赖于众多其他的规范,本质上它由以下几部分组成 用来开发Web Services的Java API 用来处理Marshal/Unmarshal的XML Binding机制,JAX-WS2.0用JAXB2来处理Java Object与XML之间的映射,Marshalling就是把Java Object映射到XML,Unmarshalling则是把XML映射到Java Object.之所以要做Java Object与XML的映射,是因为最终作为方法参数和返回值的Java Object要通过网络传输协议(一般是SOAP)传送,这就要求必须对Ja

44、va Object做类似序列化和反序列化的工作,在SOAP中就是要用XML来表示Java object的内部状态 众多元数据(Annotations)会被JAX-WS用来描述Web Services的相关类,包括Common Annotations, Web Services Metadata, JAXB2的元数据和JAX-WS2.0规范自己的元数据. Annotation Processing Tool(APT)是JAX-WS重要的组成部分,由于JAX-WS2.0规范用到很多元数据,所以需要APT来处理众多的Annotations.在/bin下有两个命令wsgen和wsimport,就是用到

45、APT和Compiler API来处理碰到的Annotations,wsgen可以为Web Services Provider产生并编译必要的帮助类和相关支持文件,wsimport以WSDL作为输入为Web Service Consumer产生并编译必要的帮助类和相关支持文件. JAX-WS还包括JAX-WS Runtime与应用服务器和工具之间的契约关系,JAX-WS2.0特性,加固数据绑定 以前,在the JAXB (Java API for XML Binding)和JAX-RPC (Java API for XML Remote Procedure Calls)中都有数据绑定工具。这显

46、然是混淆的,因此JAX-WS只选择了JAXB 2.0.我以前对JAXB有更详细的文章。 支持不断演化的标准 尽管很多现在的Web services选择了SOAP 1.1标准作为协议、格式和Web service消息的语法,但SOAP 1.2标准已经出台了一段时间,而且应该会被越来越多的应用。JAX-WS将支持SOAP 1.2,并且支持早期的SOAP 1.1。由于SOAP 1.2改变了一些SOAP消息的语法,所以这不是个小问题。当SOAP刚出现时,它被Simple Object Access Protocol支持。但由于很多人觉得SOAP并不简单,而且对对象并没什么用,我们只称它为SOAP,而不

47、附加什么含义。 类似的演化标准还有WSDL(Web Service Description Language),它被广泛用在各种Web services中。WSDL文档是一个XML格式的文件,描述了与一个Web service联系所需要的细节。当前在用的版本是1.1版,它并非是真正的W3C标准。尽管W3C最近批准了2.0版本,但JAX-WS最近还没有打算支持它。 另一个在演化的标准是Web Services Interoperability Organization。WS-I Basic Profile已经发展了,因为SOAP标准不足以良好定义来确保所有的Web service工具集都可以彼此

48、交互。JAX-WS会顺应该领域的发展。,JAX-WS2.0特性,利用Java语言的高级特性 Java能够为源代码提供某种形式的注释,即用javadoc工具处理一套以开头的注释关键字,生成HTML格式的文档。这些文档注释不会在已编译的Java类中消失。 最新版本的Java 5或Java 1.5能够在你关注的文档处添加一种重要的新特性。这是一种可以被编译到类中并能在运行时访问的注释。你可以把这些注释想象成描述一个类如何被使用的元数据。例如,它如何被作为Web service访问。 下面JAX-WS样例Java 源文件AddNumbersIF.java中的是两个注释,它让一个Web service返

49、回两个数的和。 WebService(targetNamespace = “http:/duke.org”, name=“AddNumbers”) WebMethod(operationName=“add”, action=“urn:addNumbers”) 由于这些注释生成在已编译的类中,因此处理已编译的Java类的JAX-WS工具能用Java反射机制获取程序员设计这些类的意图的额外信息。 独立传输 由于我们正在探讨Web service,人们就会忘记SOAP消息传输并没有被HTTP限制。已经有很多利用email 或者Java Message Service来传输的应用了。JAX-WS AP

50、I文档指出,它想要改进在XML消息格式和低层传输机制之间的隔离,进而用非HTTP传输简化JAX-WS的使用。使用其它传输机制的样例看起来落后于HTTP Web service样例的开发,但我已经在Glassfish项目中找到了使用Java Message Service的一个例子。,WebService框架- JAX-WS,JAX-WS 2.0 是 JAX-RPC 1.1 的后续版本 JAX-WS 的模型使用新的 Java 5.0 功能,引入了异步功能。 动态编程模型 JAX-WS 的动态客户机模型与 JAX-RPC 的对应模型差别很大。很多更改都是为了认可行业需求: 引入了面向消息的功能。引入了动态异步功能。 JAX-WS 还添加了动态服务器模型,而 JAX-RPC 则没有此模型。 消息传输优化机制(Message Transmission Optimization Mechanism,MTOM) JAX-WS 通过 JAXB(Java Architecture for XML Binding) 添加了对新附件规范 MTOM 的支持。Microsoft 从来没有给 SOAP 添加附件规范;但似乎大家都支持 MTOM,因此应该能够实现附件互操作性。,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报