Webservice/SOAP/WSDL释疑篇
What is Webservice?
从表面上看,Web service 就是一个应用程序,它向外界暴露出一个能够通过Web进行调用的API。也就是说,可以利用编程的方法通过Web来调用这个应用程序。对Web service 更精确的解释: Web services是建立可互操作的分布式应用程序的新平台。Web service平台是一套标准,它定义了应用程序如何在Web上实现互操作性。你可以用任何你喜欢的语言,在任何你喜欢的平台上写Web service ,只要我们可以通过Web service标准对这些服务进行查询和访问。
Why Webservice?
Web Services技术使异种计算环境之间可以共享数据和通信,达到信息的一致性。随着异种计算机环境的不断增加,我们会更加经常的调用各种不同计算机体系中编写和发布的Web Services
关于客户端与服务器的通信问题,一个完美的解决方法是使用HTTP协议来通信。这是因为任何运行Web浏览器的机器都在使用HTTP协议。同时,当前许多防火墙也配置为只允许HTTP连接。
Webservice与SOAP,WSDL的关系
简单的说,WSDL 是基于 XML 的语言,用于描述 Web services 以及如何访问它们。WSDL 可描述某个 web service,连同用于此 web service 的消息格式和协议细节。
SOAP 是一种基于 XML 的简易协议,允许应用程序通过 HTTP 来交换信息。或者更简单地讲,SOAP 是用于访问 web 服务的协议。
Web services 可把您的应用程序转换为 web 应用程序。通过使用 XML,可以在应用程序间传送消息。
SOAP(Simple Object Access Protocol )简单对象访问协议是在分散或分布式的环境中交换信息的简单的协议,是一个基于XML的协议.它包括四个部分:
1)SOAP封装(envelop): 封装定义了一个描述消息中的内容是什么,是谁发送的,谁应当接受并处理它以及如何处理它们的框架;
2)SOAP编码规则(encoding rules): 用于表示应用程序需要使用的数据类型的实例;
3)SOAP RPC表示(RPC representation): 表示远程过程调用和应答的协定;
4)SOAP绑定(binding): 使用底层协议交换信息。
SOAP采用了已经广泛使用的两个协议:HTTP和XML。其中HTTP用于实现SOAP的RPC风格的传输,而XML是它的编码模式,一个SOAP请求实际上就是一个HTTP POST请求。
Soap原理:
1)Soap其实是一个建立于HTTP上的上层协议(Wire Protocol电报协议,这里我觉得用上层协议更好一些)
2)使用Soap的目的是定义如何调用远程终端的中的服务(方法)。
3)Soap中用多个NameSpace标准来区别各个远程服务。
4)Soap中不仅可以封装简单的数据类型,还可以封装更加复杂的数据类型
所以有人说:Soap就是XML加HTTP。这描述虽然不准确,但的确可以概括Soap的基本意义。了解一项技术的原理,最好的方法莫过于站在一个开发它 的工程师角度来看这项技术。要实现基于Soap的架构,首先我们要知道数据是如何通过Soap传递到远程服务器端的,其大致流程如下:
首先,由客户端程序提出申请服务的要求,这个要求将被传递到客户端的处理机中,所有的申请的方法及方法所需要的参数被打成符合服务器服务标准格式的 Soap封包中(即一个符合服务器服务标准格式的XML封包),这个封包通过HTTP协议传送到服务器端,然后由服务器的XML解析器将Soap封包转化 为客户端申请的方法名及所有参数,再由编译器所提供的RTTI (RunTime Type Information)对应找到被申请的方法所在的调用堆栈地址,由服务器执行所需方法,再将方法返回的结果集通过处理机打包成XML封包传递回客户 端,由客户端解析器将结果解析输出。
不管你的Web service是用什么工具,什么语言写出来的,只要你用SOAP协议通过HTTP来调用它,总体结构都一致。通常,你用你自己喜欢的语言来构建你的Web service,然后用SOAP Toolkit把它暴露给Web客户。于是,任何语言,任何平台上的客户都可以阅读其WSDL文档,以调用这个Web service。客户根据WSDL描述文档,会生成一个SOAP请求消息。Web service都是放在Web服务器 (如WAS) 后面的,客户生成的SOAP请求会被嵌入在一个HTTP POST请求中,发送到Web服务器来。Web服务器再把这些请求转发给Web service请求处理器。请求处理器的作用在于,解析收到的SOAP请求,调用Web service,然后再生成相应的SOAP应答。Web服务器得到SOAP应答后,会再通过HTTP应答的方式把它送回到客户端。
Webservice History
Internet开发模式的演进
第一轮:HTTP,带来了Internet与电子商务
第二轮:Java,cross-platform,最早的RMI
第三轮:XML,标准的数据封装技术,各种App之间交换数据不再是难事。
但是问题来了,Java无法与异构的系统互联(例如ASP, PHP),虽然可以用XML交换数据但无法提供方法的调用。
第四代:突破不同实现技术的界限的力量 -> 同一的接口,我们的webservice
SOAP用来封装调用的服务,是使用XML座位信息的载体,可以cross-platform,但条件是各个平台都支持解析和处理SOAP。SOAP可以使用任何通信协议实体沟通,HTTP是目前最适合的。
标准的数据交换技术:XML
标准的封装调用服务:SOAP协议
使用的实体通信技术:HTTP
Internet应用系统之间约定彼此的服务:Webservice
不同应用系统如何找到它所需要的服务:UDDI???
服务具体的实现技术:Java,C,Ptyhon…
Webservice tutorial
IBM RAD工具非常强大,将开发、部署一个webservice的工作变成了点击鼠标的几下工作,按照下载的帮助就可以开发属于自己的第一个webservice了。
https://www6.software.ibm.com/dw/education/r/rconsumews/index.html
分享到:
相关推荐
详细描述WebService中SOAP协议的规范,以及WSDL文件所需要包含的要素
1. **生成代理类**:使用Visual Studio或其他工具,如`svcutil.exe`,根据WebService的WSDL(Web服务描述语言)文件生成代理类。WSDL文件描述了服务的接口、方法、参数等信息。在本例中,"C#调用WebService实例和...
soap.Append("</soap:Envelope>") ``` - 使用`HttpWebRequest`类来发送HTTP POST请求。 3. **Java实现**: - Java中可以通过`java.net.HttpURLConnection`或者第三方库如Apache HttpClient来发送SOAP请求。 - ...
【WSDL详解(Webservice)】 Web服务描述语言(Web Services Description Language,简称WSDL)是一种基于XML的应用,主要用于描述Web服务的接口和其通信细节。WSDL文档定义了一组服务访问点,允许客户端通过这些点与...
C#调用WebService实例和开发,对于初学者来说,在vs2012环境中,大家有可能不知道Web References文件夹是如何来的,它是通过右击项目,选择其中的”添加服务引用“。
wsdl2java -d /path/to/output/directory -p com.example.webservice http://localhost:7001/aueic/webservice/HelloWorld?wsdl ``` 其中`-d`指定输出目录,`-p`指定生成的Java代码的包名,最后一个参数是WSDL...
POST /webservice/n_webservice.asmx HTTP/1.1 Host: localhost Content-Type: application/soap+xml; charset=utf-8 Content-Length: length <soap12:Envelope xmlns:xsi=...
WSDL 的默认命名空间是 `http://schemas.xmlsoap.org/wsdl/`,SOAP 绑定的命名空间是 `http://schemas.xmlsoap.org/wsdl/soap/`。 在 WSDL 中,`<types>` 是一个容器,可以包含定义 WS 接口的所有抽象数据类型。既...
WSDL(Web Services Description Language)是描述Web服务的标准语言,SOAP(Simple Object Access Protocol)则是用于在Web上交换结构化信息的协议。本文将详细介绍这两个概念以及与之相关的测试工具。 **WSDL...
它通过SOAP(Simple Object Access Protocol)协议进行数据交换,使用WSDL(Web Services Description Language)来描述服务接口,而UDDI(Universal Description, Discovery, and Integration)则用于服务的发布和...
在标题和描述中提到的"webservice,soap调用",这是指使用SOAP协议来调用Web服务的过程。SOAP消息通常以HTTP或HTTPS作为传输协议,其结构主要由三个部分组成:Header、Body和Envelope。Header部分包含了关于消息处理...
POST /webservice/n_webservice.asmx HTTP/1.1 Host: localhost Content-Type: application/soap+xml; charset=utf-8 Content-Length: length <soap12:Envelope xmlns:xsi=...
<wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://example.com/MyService" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" targetNamespace=...
在本主题中,我们将深入探讨如何使用WSDL生成WebService接口以及编写Test调用方法进行测试。 1. WSDL基础 WSDL文件是一个XML文档,它描述了服务的位置(endpoint)、使用的消息格式(message)和服务提供的操作...
2. **设置SOAP Envelope和Header**:根据WebService的WSDL(Web Service Description Language)文档,确定SOAP Envelope的格式,并根据需求添加Header信息,如认证Token或SOAPAction。 3. **发送HTTP请求**:封装...
faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException faultSubcode: faultString: java.lang.reflect.InvocationTargetException faultActor: faultNode: faultDetail: {...
【标题】"WebService之WSDL和SOAP实例(基于JAVA)"主要涵盖了两个核心概念:Web服务描述语言(WSDL)和简单对象访问协议(SOAP),这些都是在Java环境下实现Web服务的关键技术。 **Web服务描述语言(WSDL)** WSDL是...
xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soapenc11=...