SOAP vs Rest
SOAP 就是传统的webservice, 定义一个wsdl,(或由服务器端代码生成一个wsdl),客户端那到这个wsdl用工具(cxf)就能生成自己的客户端接口一系列代码。 之间传输的内容需要符合wsdl中的schema校验。
Rest 是用url来表明自己要传输的内容,
http://localhost:9000/categoryservice/category/001/books
其格式需要符合
@Path("/category/{id}/books") 的定义
这个和springMVC中的@RequestMapping("/update")很像
两者的对比
soap需要用工具生产一大堆的stub skelton文件 重量级
rest很简洁 轻量级, 不需要额外代码, 而且传输的内容不需要额外的格式
soap 跨系统做的好,只要基于wsdl就ok, 适用于.Net和Java的通讯
rest 我不知道跨语言是怎么用的
一般而言一个提供webservice服务的系统都会提供这两种类型的api, 所以对于使用者是透明的。
------------------------------
types:用来定义访问的类型
message:SOAP
portType:指明服务器的接口,并且通过operation绑定相应的in和out的消息:其中in表示参数,out表示返回值
binding:指定传递消息所使用的格式
service:指定服务所发布的名称
以上是两种对WSDL的说明
如果用自己的话来讲就是
types 定义的是schema文件或是其内容
message 就是对需要哪些schema中的对象作为SOAP对象的
portType 定义了接口名字和需要发布哪些方法, 该方法的input和output参数是message中定义的类型
binding和service 规定了发布的url地址等信息。属于physical locations, 不需要我们care
Restful可以参照 http://reymont.iteye.com/blog/1523822
附件中是soap实现 和 restful的实现
对于restful实现有两个问题
1, 客户端的PO类即Category, Book 如何生成? 通过浏览器看到的xml? http://localhost:9000/categoryservice/category/001/books
2, 有没有第三方的工具类似于xmlspy的来作为工具,测试restful的?
需要指定访问方法post get delete等 SOAPUI?
firefox带有restClient的插件可以用来测试
--
用soapUI测试restful, 可以设置http的method(get post delete等),但是无法模拟对象的实体类, 比如需要新增一个实体类时需要传递一个PO的对象,而在soapUI中无法构造出。
-- 该对象有json格式模拟, 而json格式的说明需要由提供rest的服务端提供
-- 可以通过get方法来得到json格式, 修改后再发送。 firefox 插件支持
见附件 email.rar
<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions name="HelloWorldImplService" targetNamespace="http://tristan01.com/" xmlns:ns1="http://schemas.xmlsoap.org/soap/http" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://tristan01.com/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<wsdl:types>
<xs:schema elementFormDefault="unqualified" targetNamespace="http://tristan01.com/" version="1.0" xmlns:tns="http://tristan01.com/" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="add" type="tns:add"/>
<xs:element name="addResponse" type="tns:addResponse"/>
<xs:complexType name="add">
<xs:sequence>
<xs:element name="arg0" type="xs:int"/>
<xs:element name="arg1" type="xs:int"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="addResponse">
<xs:sequence>
<xs:element name="return" type="xs:int"/>
</xs:sequence>
</xs:complexType>
</xs:schema>
</wsdl:types>
<wsdl:message name="addResponse">
<wsdl:part element="tns:addResponse" name="parameters">
</wsdl:part>
</wsdl:message>
<wsdl:message name="add">
<wsdl:part element="tns:add" name="parameters">
</wsdl:part>
</wsdl:message>
<wsdl:portType name="HelloWorld">
<wsdl:operation name="add">
<wsdl:input message="tns:add" name="add">
</wsdl:input>
<wsdl:output message="tns:addResponse" name="addResponse">
</wsdl:output>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="HelloWorldImplServiceSoapBinding" type="tns:HelloWorld">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name="add">
<soap:operation soapAction="" style="document"/>
<wsdl:input name="add">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="addResponse">
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="HelloWorldImplService">
<wsdl:port binding="tns:HelloWorldImplServiceSoapBinding" name="HelloWorldImplPort">
<soap:address location="http://localhost:8888/ns"/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>

- 大小: 54.1 KB

- 大小: 68.7 KB
分享到:
相关推荐
这个场景通常是通过Web服务,如WebService来实现。本文将详细介绍如何在Android应用中利用WebService接口连接到SQLServer数据库,实现数据的增删改查操作。 首先,理解概念: 1. Android:Android是一种开源操作...
WebserviceStudio是一款强大的Web服务测试和调用工具,版本为20。这款工具主要帮助开发者和测试人员方便地测试和调试他们的Web服务。以下是WebserviceStudio的一些核心功能和相关知识点: 1. **图形化界面**:...
调用WebService,最简单的办法当然是直接添加WEB引用,然后自动产生代理类,但是在调用JAVA的WebService时并没有这么简单,特别是对于SoapHeader的处理,通过C#添加Web引用方式访问JavaWebService的方法,除了string...
### SqlServer触发器调用WebService知识点详解 #### 一、SqlServer触发器简介 在了解如何通过Sql Server触发器调用WebService之前,我们首先需要对触发器有一个基本的认识。触发器是一种特殊的存储过程,它被定义...
然而,由于其自身不直接支持Web服务(WebService)的调用,开发者通常需要借助第三方库或者特定的技术来实现。本篇文章将详细讲解如何在C++中调用WebService,包括静态和动态方式,并探讨相关的源码实现。 首先,让...
【标题】:Idea实现WebService实例 在Java开发中,WebService是一种常见的跨平台、跨语言的通信方式,它允许不同的应用程序之间交换数据。IntelliJ IDEA(简称Idea)是广受欢迎的Java集成开发环境,提供了强大的...
根据提供的文件信息,本文将详细解释一个简单的 WebService 示例,并深入探讨其中的关键概念和技术细节。 ### 一、WebService 概念 #### 1.1 WebService 定义 WebService 是一种支持通过网络进行调用的服务形式,...
### WebService的优势与劣势 #### 一、WebService概述 WebService是一种平台独立的、分布式的、基于互联网的应用程序接口(API),它使用标准的Internet协议(如HTTP)进行通信,并使用XML来交换数据。WebService...
在本案例中,我们关注的是一个特定的Web服务类型——WebService,它用于获取一个包含泛型对象的List。这个场景在分布式系统、微服务架构或者跨平台数据共享中非常常见。让我们深入探讨一下相关的知识点。 1. **...
WebService是一种基于XML(可扩展标记语言)的互联网通信标准,它允许不同的应用程序之间进行互操作。这个名为"WebService依赖jar以及xml.zip"的压缩包文件包含了一组用于构建和运行WebService所需的重要组件。 ...
在WinForm应用程序中调用WebService是一项常见的任务,它允许客户端应用程序与远程服务器上的服务进行交互,从而实现数据交换和功能扩展。以下是如何在WinForm中实现这一操作的详细步骤及涉及的相关知识点: 1. **...
在VC++中调用WebService服务是一项常见的任务,尤其在跨平台通信、系统集成或扩展应用程序功能时。WebService是一种基于Web的、松耦合的服务,它使用标准的HTTP协议进行通信,并通过XML(eXtensible Markup Language...
### SAP Webservice 测试方法详解 #### 一、引言 在现代企业信息化管理中,SAP系统作为企业管理软件中的佼佼者,被广泛应用。随着SAP系统的不断升级与扩展,Webservice技术作为一种重要的集成手段,在SAP系统中...
本主题聚焦于C#中的WebService客户端和服务器的交互,以及如何利用Json进行数据交换。Json(JavaScript Object Notation)是一种轻量级的数据交换格式,因其易读性和易于编写而被广泛应用。 一、C# WebService简介 ...
这里我们关注的是动态调用WebService并处理返回的JSON数据,然后将这些数据展示在GridView中。这个过程涉及到的技术主要包括:WebService的调用、JSON数据解析以及数据绑定到GridView。 首先,让我们来理解...
### BCB调用WebService方法详解及常见问题排查 #### 一、引言 在现代软件开发中,跨平台服务通信已成为一种常态。其中,WebService作为一种常见的远程服务调用方式,在不同语言之间进行交互时扮演着重要的角色。...
WebServiceStudio是一款基于C#开发的轻量级工具,主要用于测试和调试Web服务接口。这个工具的源码提供了深入理解Web服务交互机制的机会,对于学习和开发相关应用具有很高的价值。以下将详细介绍其中涉及的主要知识点...
在探讨Java调用带有JSON参数的WebService之前,我们首先需要了解几个关键的技术概念:Java、JSON以及WebService。 Java是一种广泛使用的编程语言,它具有面向对象、跨平台、多线程以及健壮性等特点。Java在企业级...
【标题】:“C# WebService调用测试工具” 在IT领域,Web Service是一种基于网络的、松散耦合的软件组件,它允许不同系统之间的数据交换。C# WebService调用测试工具是专为开发者设计的,用于测试和调试Web Service...