65

WCF和REST&SOAP是什么关系?WCF 是基于其中一种技术(REST 或 SOAP)还是一种单独的技术?

4

4 回答 4

150

WCF 是用于构建分布式系统的消息传递框架。分布式系统主要是Web 服务的另一种说法。

这意味着您可以用 C#(或任何 .NET 语言)编写方法,然后对代码应用一系列配置,使其他人可以访问您的代码并将您的代码转换为 Web 服务。

那些“一堆配置”是 WCF。如果您围绕 C# 代码设置 WCF 配置以将其公开为 RESTful 服务,WCF 允许您使用 REST 向其他计算机或应用程序公开您的方法。或者,您可以轻松地采用相同的 C# 方法并通过 SOAP 协议使它们可用。

如果您有一个名为“GetData()”的方法,则可以设置 WCF 配置以使该方法在 IIS 中托管的服务中可用。当有人调用该服务时,他们可以向http://www.yourdomain.com/SomeService/GetData发送 HTTP GET 请求,GetData 方法将接收该消息并发回响应。当您通过 HTTP 发出 GET 请求时,您使用的是 REST。REST 与作为传输协议的 HTTP 非常相关。REST 也没有标准的消息格式。无论您想在 HTTP 消息中发送什么,无论您想发送什么,都可以。您可以发送 XML、JSON 或纯文本。您也可以使用 POST、GET 或 PUT 或任何 HTTP 动词。

使用 SOAP,您可以使用任何传输协议将您的消息发送到服务——您不受 HTTP 的束缚。SOAP 消息被设计为传输中立的。它们以 XML 编码,并且 XML 始终在信封节点内有一个头节点和一个主体节点。有很多围绕 SOAP 的 Web 标准——例如,将安全性、会话和其他特性放入消息头的标准。此外,使用 SOAP,您将获得一个 WSDL,我不会在这里解释它,但它使客户更容易对其进行编程。大多数编程语言都有一种获取 WSDL 并将其转换为强类型方法和对象的方法,以便您的服务易于调用。

REST 在互联网上非常流行,并且与互联网一样可扩展(即非常可扩展)。SOAP 在企业对企业应用程序中非常流行。

于 2013-02-28T04:37:23.017 回答
32

WCF 不会自动成为 REST 或 SOAP,但您可以这样做。你需要的是一个教程:

WCF

http://www.codeproject.com/Articles/406096/A-beginners-tutorial-for-understanding-Windows

休息

http://rest.elkstein.org/

这里还有一些其他有趣的东西:

WCF - REST / SOAP

https://msdn.microsoft.com/en-us/library/hh323708(v=vs.100).aspx

WCF 和 REST

https://msdn.microsoft.com/en-us/library/ee391967.aspx

或者您可以自己进行 google/bing/metacrawler/altavista 搜索.....

于 2013-02-28T04:06:37.627 回答
10

来自MSDN

WCF 编程模型提供各种功能,例如 SOAP 服务、Web HTTP 服务、数据服务、富 Internet 应用程序 (RIA) 服务和工作流服务。SOAP 服务支持使用 Java 构建的系统、其他平台以及使用 Microsoft® 支持的消息传递标准的系统之间的互操作性。SOAP 服务还支持 HTTP、TCP、命名管道和 MSMQ 等传输。Web HTTP 服务和数据服务都支持 REST。Web HTTP 服务使您能够控制服务位置、请求和响应、格式和协议。数据服务使您能够将数据模型和数据驱动逻辑作为服务公开。WCF 还包括两个编程模型:服务模型和通道模型。服务模型提供了一个定义数据契约的框架,服务合同和服务行为。通道模型支持指定格式、传输和协议。

SOAP 和 REST 服务都可以为 Web 应用程序提供功能,并且都可以用于在 Web 的分布式环境中交换信息。每个都有自己的优点和局限性。

于 2013-02-28T04:05:23.713 回答
7

虽然,这个问题有几个很好的答案,只需投入我的 2 美分,以尝试让新手了解WCF、SOAP 和 REST——完整服务 他们更容易理解。

我们感到困惑,WCF 是否同时支持RESTSOAP而且,通常,我们只看到关于 SOAPREST的通用定义。所以,我们需要来自微软的东西来让我们感受到真相:)所以这是来自微软 MSDN的截图:

MSDN 文章网址在此处输入图像描述

所以,的,WCF 支持两者。

在 OP 的上下文中:

  • SOAP 服务:
    在 WCF 编程模型中,支持使用 Java、其他平台构建的系统以及使用 Microsoft® 支持的消息传递标准的系统之间的互操作性。它们还支持 HTTP、TCP、命名管道和 MSMQ 等传输。
  • Web HTTP 服务
    在 WCF 编程模型中支持REST。[来源:MSDN ]
于 2017-05-31T08:18:50.550 回答