REST不是标准';Per-Se';那么,WCF为什么要创建wsdl,这有什么意义,它比SOAP更糟糕吗

本文关键字:它比 什么 SOAP Per-Se 标准 那么 WCF 创建 REST 为什么 wsdl | 更新日期: 2023-09-27 17:59:20

可能重复:
使用基于rest的服务的WSDL有什么意义?

我必须决定是为我们的API实现基于SOAP还是基于REST的体系结构。我之所以喜欢REST,是因为它的设计模式很简单,而且可以相对轻松地进行测试(例如,通过所有GET请求的浏览器)。

然而,有人告诉我,因为SOAP比REST更标准化,所以它更适合面向服务的体系结构,因此也更好。

我明白这个论点的逻辑,但我也明白。。

  1. Http是标准的
  2. JSON和XML文档非常标准
  3. 我的REST Web服务创建了一个wsdl

实际上,它的第3点似乎让我感到困惑——如果REST是如此"非标准",那么它为什么要创建WSDL呢?SOAP接口创建WSDL。两个WSDL都可以更改(如果服务更改),那么最终有什么区别?

我真的不需要现在或任何时候实现WS*功能。能够从我们自己的ajax控件调用这个API也是有益的。让人们能够从ajax中调用它。在我看来REST是前进的方向,但确实需要检查。

希望有人能帮忙。

REST不是标准';Per-Se';那么,WCF为什么要创建wsdl,这有什么意义,它比SOAP更糟糕吗

您是否已经阅读了上一个问题的答案?WCF将为您的REST服务生成WSDL,但从该WSDL生成的客户端不起作用,也不起作用是因为WSDL没有正确描述您的服务。在.NET4中,如果您尝试在WcfTestClient中打开公开REST端点的服务,它会省略这些端点,因为它知道无法调用它们。为了描述REST服务,WCF 4提供了帮助页面。

SOAP是标准的,但REST是体系结构方法。有时有人说,当您想要拥有公共消费者(尤其是移动设备)时,会使用REST服务,而SOAP服务则用于内部和B2B开发,但事实并非如此。

SOAP基本上是面向操作的。您有一项服务,可以提供任意数量的操作。基本SOAP只使用HTTPPOST和众所周知的内容类型。在REST中,您可以拥有任意多的资源,但操作集(HTTP谓词)有限。此外,您可以在许多内容类型中公开资源。真正的REST服务是自我描述的,因为资源链接其他资源,您可以像浏览超文本一样浏览链接。

当使用SOAP服务时,您有一个可以进行对话的协议。当使用REST服务时,内容本身就是为服务需求定义的"协议"。

这里的问题是当前WCF在为SOAP服务创建的基础设施上设置REST功能。有统一的API是件好事,但它模糊了这两种方法之间的区别。