2010-07-07 270 views
4

我对第三方Web服务工作了很多。我首先要看的是,如果他们提供了一个WSDL,我可以轻松地将它添加到Visual Studio中,并立即使用VS根据WSDL创建的自动生成的代理类来启动,显然,我能够快速开始编码并开始使用任何第三方派对API。关于NVP与SOAP差异和术语的问题

因此,例如PayPal提供了两种API。一个通过名称值对和其他SOAP公开了一个WSDL,我可以在我的.NET项目中使用并关闭。

所以我可以在这里假设以下关于术语?

  1. NVP不提供WSDL
  2. SOAP Web服务可能会或可能不会在任何时候都提供了一个WSDL为你纳入你的项目,以便(它通过查询字符串中的HTTPRequest传递的名称值对完成)消费
  3. REST只是一个可以应用于NVP的命名规则 - 或者 - SOAP/WSDL类型的API
  4. 它被称为API或SDK吗?我总是指一个服务,我正在访问API API,但是由于某种原因,我的老板称之为一个对我来说没有意义的SDK ...... API是我看到最多的那个

我不太确定我的陈述是否100%正确,需要清除此问题。

回答

8
  1. NVP不提供WSDL

什么叫贝宝名称 - 值对不是标准(它是由查询字符串中的HTTPRequest传递的名称值对完成)。但是,他们并不是唯一使用它的人(看起来)。它基本上是将参数作为名称和值对(显然)发送,这很容易以编程方式处理,因为HTML表单执行相同的操作,所以通过发送NVP您可以模拟Web表单,而服务器端编程也是一样的。

总之,将其称为NVP比说:请使用application/x-www-form-urlencoded更容易。

  • SOAP的Web服务可能或在任何时候都可能无法提供一个WSDL为你纳入你的项目,以消耗
  • 从理论上讲,是。作为协议的SOAP不强制使用WSDL来定义/描述。它只描述客户端和服务器(和/或中介)之间的消息。实际上,SOAP Web服务的概念通常意味着使用WSDL描述并使用SOAP进行消息交换的Web服务。几乎所有可用的软件(.Net,Java和其他像gSOAP C/C++)通过WSDL定义Web服务。工具可用于将预定义的类转换为WSDL,反之亦然,SOAP通常由库支持来处理。

    总之,通过从WSDL生成类来使用Web服务的方式是标准方法。虽然SOAP定义了交换的消息,但如果没有定义服务 - 在WSDL中 - 它不是一个Web服务,因为没有服务契约。

  • REST仅仅是一个命名年公约可以施加到NVP - 或 - SOAP/WSDL类型的API
  • REST当然不是一个命名这是一种建筑风格,主要围绕着资源和超链接的概念构建。有很好的解释,但你可以很大程度上通过这种风格来识别它:你使用一小部分动词(通常是HTTP:GET,POST,PUT,DELETE或其中的一部分)来实现你想要的资源动作。一个简单的方法来找出那些是:

    1. 地址表示的资源,因此,而不是像销售,授权和订单有动作被发送,你会处理看起来像http://www.example.org/Sales/sale-015http://www.example.org/orders/1337不同的地址请求的一部分,你可以使用GET进行访问或使用DELETE进行删除,或者根据需要使用PUT或POST进行修改。

    2. 对REST请求的响应通常包含相关链接,您可以将其用于潜在的下一个操作。因此,销售的响应消息可能包含允许您确认销售的链接。

    如果正确实施,REST为客户端和服务器提供更多的修改范围。相比之下,SOAP Web服务客户端和服务器必须坚持定义为互操作的WSDL协定。

    1. 它被称为API或SDK吗?我总是指一个服务,我正在访问API API,但是由于某种原因,我的老板称之为一个对我来说没有意义的SDK ...... API是我看到最多的那个

    API(应用程序编程接口)是一个定义的函数列表,可以从外部访问,从而定义一个接口。 SDK(软件开发工具包)是一组用来开发软件的软件工具和库。所以如果你下载的是SDK的可执行代码;如果它是API的文档。

    贝宝提供了一个API。通过对比,为iPhone开发软件(只是为了举例),您必须从Apple下载iPhone SDK。

    +0

    谢谢。我认为它有点奇怪,有些不提供SOAP,只是应用程序/ x-www-form-urlencoded – PositiveGuy 2010-07-16 03:52:57

    +0

    Facebook没有提供WSDL,我只是不明白。你为什么不支持大多数人都想使用的主要Web服务类型? – PositiveGuy 2010-07-16 03:54:12

    +0

    基本上,它们是Web服务的不同方法。如果您将像Amazon S3一样的API(http://docs.amazonwebservices.com/AmazonS3/latest/index.html?RESTAPI.html)同时包含REST和SOAP API,那么使用REST并不比使用REST更困难肥皂。 WSDL有帮助,但您仍然需要阅读文档。过去,亚马逊为其服务提供了SOAP和REST API,并且有超过80%的开发人员使用REST API。所以,并非大多数人都想使用SOAP。 – 2010-07-16 08:10:37

    1

    所有的SOAP web服务都应该提供一个WSDL。他们不需要通过URL在线提供它。 Web服务供应商可能会通过电子邮件或其他渠道向您发送WSDL。重要的是应该有一个WSDL来描述服务。

    “NVP”只是PayPal和其他一些人正在使用的东西。这不是某种标准。

    REST是独立的建筑风格。请参阅SOAP or REST

    +0

    那么,NVP没有可用的WSDL。 – PositiveGuy 2010-07-14 00:28:53

    +0

    和NVP没有使用SOAP,它使用查询字符串参数而不是SOAP/WSDL – PositiveGuy 2010-07-14 00:29:15

    +0

    我错了吗?如果我错了,请纠正我......但那是我的经历。我只是无法验证我所说的术语是否正确,但是在使用这两种类型的API时我就看到了这一点 – PositiveGuy 2010-07-14 00:29:58