![](https://i-blog.csdnimg.cn/blog_migrate/381917cdc124ea0cc4682fb49299496f.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/381917cdc124ea0cc4682fb49299496f.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/381917cdc124ea0cc4682fb49299496f.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/381917cdc124ea0cc4682fb49299496f.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/381917cdc124ea0cc4682fb49299496f.gif)
SOAP:Web Service通过标准通信协议,在互联网上发布有用的程序模块(以服务的方式),目前大部分是用SOAP来作通信协议。因为SOAP与 DCOM和CORBA在概念上有相同之处,所以很多人在问:“SOAP是怎样激活对象的?”或“SOAP在使用什么命名服务(Naming Service)?”。或许在执行SOAP的过程当中会用到这些,但这些并不在SOAP规范要考虑的范畴之内。SOAP只是定义SOAP消息的XML格式(XML Format),如果你用一对SOAP标记(SOAP Elements)把XML文档括起来,那么这个就是一个SOAP消息,这不是很简单吗?
SOAP规范还定义了怎样用XML来描述程序数据(Program Data),怎样执行RPC(Remote Procedure Call)。这些可选的规范是为了构建RPC-style的应用程序(客户端SOAP消息包含函数名和在函数中用到的参数,而服务器端SOAP消息包含执行函数之后的结果)。大多数SOAP解决方案都支持RPC-style应用程序,因为很多程序员已对DCOM或CORBA熟悉。SOAP还支持 Document-style应用程序(SOAP消息只包含XML文本信息)。Document-style应用程序有很好的灵活性,所以很多用RPC很难构建的Web Service用这种方式构建。
最后SOAP规范还定义了HTTP消息是怎样传输SOAP消息的。这并不代表SOAP只能用HTTP来作为传输协议,MSMQ、SMTP、TCP/IP都可以做SOAP的传输协议。
很多大公司根据SOAP规范,都开发出了自己的SOAP解决方案。这些解决方案都是相对于某种语言。比如说Microsoft SOAP toolkit2.0把COM函数转换成SOAP消息,而Apache toolkit把JAVA函数转换成SOAP消息。这样难免带来一些兼容性问题。
现在SOAP的很多另人瞩目的特性已成为现实(SOAP已经运行于不同的硬件和软件平台),而且有70多个解决方案。之所以SOAP被人们所爱戴,是因为 SOAP比其他同类技术(CORBA、DCE)简单易用。
![](https://i-blog.csdnimg.cn/blog_migrate/381917cdc124ea0cc4682fb49299496f.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/381917cdc124ea0cc4682fb49299496f.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/381917cdc124ea0cc4682fb49299496f.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/381917cdc124ea0cc4682fb49299496f.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/381917cdc124ea0cc4682fb49299496f.gif)
Web Service提供一份详细的接口说明书,来帮助用户构建应用程序,这个接口说明书叫作WSDL(Web Service Description Language)。
WSDL是一种XML文档,它定义SOAP消息和这些消息是怎样交换的。IDL(Interface Description Language)是用于COM和CORBA的,WSDL是用于SOAP的。WSDL是一种XML文档,所以我们可以阅读和编辑,但很多时候是用工具来创建、由程序来阅读。
举个例子,你要使用供应商的Web Service构建应用程序。你可以向供应商索取使用Web Service的范例,然后按照范例来构建应用程序。这样可能出现意料不到的错误,比如说,你在程序中使用的客户代码的数据类型是integer,而供应商使用的数据类型是string.。WSDL详细定义客户端消息的格式,需要什么样的参数,这样可以避免不必要的错误
![](https://i-blog.csdnimg.cn/blog_migrate/381917cdc124ea0cc4682fb49299496f.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/381917cdc124ea0cc4682fb49299496f.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/381917cdc124ea0cc4682fb49299496f.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/381917cdc124ea0cc4682fb49299496f.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/381917cdc124ea0cc4682fb49299496f.gif)
通常已发布的Web Service要注册到管理服务器,这样便于使用者查询和使用。这个是通过UDDI(Universal Discovery Description and Integration)来完成的
UDDI可以比喻成电话本,电话本里记录的是电话信息,而UDDI记录的是Web Service信息。你可以不把Web Service注册到UDDI。但如果要让全球的人知道你的Web Service,最好还是注册到UDDI。
UDDI目录说明文件也是一个XML文档,它包括三个部分。“白页(White Paper)”说明提供Web Service的公司(人)信息,比如说名称、地址和联系方式等等。“黄页(Yellow Paper)”说明UDDI目录的分类,比如说金融、服务和印刷等等。“绿页(green Paper)”说明接口(Web Service 提供的)的详细信息。
UDDI提供多种查询方式,来帮助你找到需要的Web Service。如果你查询与财务有关的Web Service,那么UDDI会提供详细的信息。
webservice的使用:
两个系统需要进行数据交换,讨论用文本方式还是其他方式?我一直推荐使用web service方式,Web Service就是为了使原来各孤立的站点之间的信息能够相互通信、共享而提出的一种接口。
Web Service所使用的是Internet上统一、开放的标准,如HTTP、XML、SOAP(简单对象访问协议)、WSDL等,所以Web Service可以在任何支持这些标准的环境(Windows,Linux)中使用。
注:SOAP协议(Simple Object Access Protocal,简单对象访问协议),它是一个用于分散和分布式环境下网络信息交换的基于XML的通讯协议。在此协议下,软件组件或应用程序能够通过标准的HTTP协议进行通讯。它的设计目标就是简单性和扩展性,这有助于大量异构程序和平台之间的互操作性,从而使存在的应用程序能够被广泛的用户访问。
优势:
I. 它的跨平台;
II. 并且SOAP协议是基于XML和HTTP这些业界的标准的,得到了所有的重要公司的支持。
III. 由于使用了SOAP,数据是以ASCII文本的方式而非二进制传输,调试很方便;并且由于这样,它的数据容易通过防火墙,不需要防火墙为了程序而单独开一个“漏洞”。
IV. 此外,WebService实现的技术难度要比CORBA和DCOM小得多。
V. 要实现B2B集成,EDI比较完善与比较复杂;而用WebService则可以低成本的实现,小公司也可以用上。
VI. 在C/S的程序中,WebService可以实现网页无整体刷新的与服务器打交道并取数。
缺点:
I. WebService使用了XML对数据封装,会造成大量的数据要在网络中传输。
II. WebService规范没有规定任何与实现相关的细节,包括对象模型、编程语言,这一点,它不如CORBA
![](https://i-blog.csdnimg.cn/blog_migrate/381917cdc124ea0cc4682fb49299496f.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/381917cdc124ea0cc4682fb49299496f.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/381917cdc124ea0cc4682fb49299496f.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/381917cdc124ea0cc4682fb49299496f.gif)
xfire,axis,webservice,soap,stax,POJOs,WSDL等,搞清楚他们之间的关系,了解其机制原
XFire是与Axis 2并列的新一代WebService框架。具有如下:
1支持一系列Web Service的新标准--JSR181、WSDL2.0 、JAXB2、WS-Security等 ;
2使用Stax解释XML,性能有了质的提高。XFire采用Woodstox 作Stax实现;
3Easily Create Services from POJOs;
4易于与Spring框架结合;
5灵活的Binding机制,包括默认的Aegis,xmlbeans,jaxb2,castor
StAX:Streaming API for XML 。与 Simple API for XML (SAX) 不同,StAX 提供了编写 XML 文档的 API。更具体地说,它提供了两种 API:底层的、基于指针的 API( XMLStreamWriter )和高级的、基于事件的 API( XMLEventWriter )。基于指针的 API 最适合用于数据绑定的情况(比如从应用程序数据创建文档),而基于事件的 API 则通常用于管道式的情况,从输入文档中的数据构造新的文档。
POJOs:简单的JAVA对象(Plain Old Java Objects)