【问题标题】:REST in WCF for non dot.NET clients用于非 dot.NET 客户端的 WCF 中的 REST
【发布时间】:2014-01-13 11:06:10
【问题描述】:

我已经阅读了很多关于 REST 和 SOAP 之间差异的文章。我只总结几行,如果有错请告诉我。

  1. SOAP 是一种使用 HTTP、TCP 等传输消息的协议,而 REST 仅使用 HTTP 传输消息。

  2. SOAP 仅以 XML 格式传输消息,而 REST 使用 JSON 或 XML。

  3. REST 不涉及与 SOAP 相同的流量开销(因为 SOAP 涉及复杂的 XML WSDL 生成)。

我听说 WCF 是为了提供互操作性而开发的。我在 .net 中开发了 REST 服务,客户端是移动设备(不是 .net 客户端)。这个我已经测试并上线了。

话虽如此,我的问题是……

是否有人开发了基本的httpbinding WCF 服务并将其提供给非.net 客户端(如Java、移动设备等)以使其具有互操作性?非 .net 客户端是否可以使用 REST 以外的 WCF

【问题讨论】:

    标签: wcf web-services rest soap wcf-binding


    【解决方案1】:

    是的,您可以使用任何类型的 SOAP 或 REST 客户端使用 WCF 服务。

    SOAP 是一种使用 HTTP、TCP 等传输消息的协议,而 REST 仅使用 HTTP 传输消息。

    这太宽泛了,无法用“是”或“否”来回答。与您的问题严格相关,我们对 SOAP 具有以下特征:

    • SOAP 是一种协议;
    • SOAP 消息可以通过 HTTP、TCP、SMTP 等(实际上是任何协议)发送。 SOAP 是在另一个传输协议之上使用的消息传递协议;
    • SOAP 最常用的协议是 HTTP 和 HTTPS;

    现在 REST 的特征:

    • REST 是一种构建应用程序的架构风格;
    • REST实际上并没有绑定HTTP协议,它可以使用任何传输协议;
    • 每个人都使用 HTTP 和 HTTPS 进行 REST;

    SOAP 仅以 XML 格式传输消息,而 REST 使用 JSON 或 XML。

    SOAP 只能发送 XML 消息,它是协议的一部分。您实际上需要为带有 Envelope、Header 和 Body 标签的 XML 使用特定格式。

    REST 是关于资源的表示。表示可以有任何结构,可以是任何格式,而不仅仅是 XML 或 JSON(虽然 XML 和 JSON 是最常用的);

    REST 不涉及与 SOAP 相同的流量开销(因为 SOAP 涉及复杂的 XML WSDL 生成)。

    WSDL 不参与实际的操作调用,它是单独描述 SOAP Web 服务的东西。 REST 有类似的东西(虽然不是很常用),叫做WADL。您需要使用 SOAP 和 REST 编组/解组您的数据,因此开销在大多数情况下不是问题(SOAP 信封不是那么大)。

    是否有人开发了基本的httpbinding WCF 服务并将其提供给Java、移动设备等非.net 客户端以使其具有互操作性?非 .net 客户端是否可以使用 REST 以外的 WCF?

    这就是 Web 服务(SOAP 或 RESTful)的理念,可以从任何类型的客户端调用。这是两台机器之间的一种通信方式。机器的实现无关紧要(Java、C#、PHP、Python 等)。

    WCF 是一个 Web 服务框架,可以将服务公开为 SOAP 或 REST API。它可以从任何类型的客户端调用。

    【讨论】:

      【解决方案2】:

      我认为你误解了一些基本点。

      1. REST 和 SOAP 都是通过 HTTP 播放的 Web 服务协议。我认为你不应该关心 HTTP、TCP 或 UDP,因为它们是较低级别的协议......

      2. SOAP 将所有内容包装在一个 XML 信封中,这会增加一些流量开销。这就是为什么 SOAP 被认为性能更差但更正式,因此更适合某些用途的原因。

      3. SOAP 和 REST 都独立于它们实现的平台

      因此,是的,您可以使用任何类型的 REST 或 SOAP 客户端来使用在 .NET 上实现的 REST 或 SOAP 服务。您还应该知道,您可以使用 WCF 实现您的 Web 服务功能,并通过更改一些 configuration options 来更改 SOAP 和 REST 之间的端点 .

      希望我能帮上忙!

      【讨论】:

        【解决方案3】:

        是的,可以为非 .net 客户端使用除 Rest 之外的 WCF 服务。 WCF 基本上允许您创建 Web 服务。 Web 服务的目的是提供跨平台功能。

        Rest 和 Soap 都是 Web 服务,但用途不同。 这取决于您的要求,您想使用哪一个。 Rest 仅适用于 http 协议,可以通过 URI 轻松调用,也可以通过 URL 进行 CRUD 操作。也可以从网络浏览器调用。

        但是soap也支持跨平台通信,但是想要使用soap的客户端必须要有soap工具包的支持。不能从浏览器调用。现在几乎所有的语言都支持 SOAP api。

        您使用 basichttpbinding 公开的服务是基于肥皂的服务,是的,它也可以从非 .net 客户端调用。

        【讨论】:

          【解决方案4】:

          使用 web apis 而不是 wcf 服务来获取 rest 方法。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2012-04-17
            • 2011-08-21
            • 2011-04-18
            • 2011-09-10
            • 1970-01-01
            • 1970-01-01
            • 2011-11-23
            相关资源
            最近更新 更多