【发布时间】:2010-09-25 23:10:11
【问题描述】:
它们之间有什么区别?
我什么时候会选择其中之一?
【问题讨论】:
-
查看其他讨论以获取更多信息...stackoverflow.com/questions/50114/…
标签: wcf web-services
它们之间有什么区别?
我什么时候会选择其中之一?
【问题讨论】:
标签: wcf web-services
此答案基于不再存在的文章:
文章摘要:
“基本上,WCF 是一个服务层,它允许您构建可以使用各种通信机制进行通信的应用程序。有了它,您可以使用对等、命名管道、Web 服务等进行通信。
您无法比较它们,因为 WCF 是用于构建可互操作应用程序的框架。如果您愿意,可以将其视为 SOA 推动者。这是什么意思?
WCF 符合 ABC,其中 A 是您要与之通信的服务的地址,B 代表绑定,C 代表合同。这很重要,因为可以更改绑定而不必更改代码。合约更强大,因为它强制将合约与实现分离。这意味着合约是在一个接口中定义的,并且有一个具体的实现,由消费者使用相同的合约思想来绑定。数据模型被抽象出来。”
...稍后...
“当我们需要与其他通信技术(例如点对点、命名管道)而不是 Web 服务进行通信时,应该使用 WCF”
【讨论】:
来自What's the Difference between WCF and Web Services?
WCF 是 Microsoft 早期所有 Web 服务技术的替代品。它还比传统上被视为“Web 服务”的功能要多得多。
WCF“Web 服务”是通过 WCF 实现的更广泛远程通信的一部分。您将在 WCF 中获得比通过传统 ASMX 更高程度的灵活性和可移植性,因为 WCF 从头开始设计,总结了 Microsoft 提供的所有不同的分布式编程基础结构。 WCF 中的端点可以通过 SOAP/XML 与通过 TCP/二进制文件进行通信一样容易,并且更改此介质只需一个配置文件 mod。理论上,这可以减少移植或更改业务需求、目标等时所需的新代码量。
ASMX 比 WCF 更老,ASMX 可以做到的任何事情都可以 WCF(以及更多)。基本上,您可以将 WCF 视为试图将在 Microsoft 世界中让两个应用程序进行通信的所有不同方式逻辑地组合在一起; ASMX 只是众多方式中的一种,因此现在归入 WCF 功能的保护伞下。
Web 服务只能通过 HTTP 访问,它可以在无状态环境中工作,其中 WCF 很灵活,因为它的服务可以托管在不同类型的应用程序中。托管 WCF 服务的常见方案是 IIS、WAS、自托管、托管 Windows 服务。
主要区别在于 Web 服务使用
XmlSerializer。但是 WCF 使用DataContractSerializer,与XmlSerializer相比,它的性能更好。
【讨论】:
网络服务 基于 SOAP 并以 XML 形式返回数据。 它只支持 HTTP 协议。 它不是开源的,但可以被任何理解 xml 的客户端使用。 它只能托管在 IIS 上。
WCF 也是基于 SOAP 并以 XML 形式返回数据。 它是 Web 服务 (ASMX) 的演变,支持 TCP、HTTP、HTTPS、命名管道、MSMQ 等各种协议。 WCF 的主要问题是其繁琐且广泛的配置。 它不是开源的,但可以被任何理解 xml 的客户端使用。 它可以托管在应用程序中,也可以托管在 IIS 上或使用窗口服务。
【讨论】:
基本和主要区别在于,ASP.NET Web 服务旨在仅通过 HTTP 交换 SOAP 消息,而 WCF 服务可以通过任何传输协议(即 HTTP、TCP、MSMQ 或 NamedPipes 等)使用任何格式(默认为 SOAP)交换消息.
【讨论】:
Web 服务和 WCF 有什么区别?
Web 服务在将数据从一个应用程序传输到另一个应用程序时仅使用 HTTP 协议。
但是 WCF 支持比 ASP.NET Web 服务更多的消息传输协议。 WCF 支持使用 HTTP 以及传输控制协议 (TCP)、命名管道和 Microsoft 消息队列 (MSMQ) 发送消息。
要在Web Service中开发一个服务,我们将编写如下代码
[WebService]
public class Service : System.Web.Services.WebService
{
[WebMethod]
public string Test(string strMsg)
{
return strMsg;
}
}
要在 WCF 中开发服务,我们将编写以下代码
[ServiceContract]
public interface ITest
{
[OperationContract]
string ShowMessage(string strMsg);
}
public class Service : ITest
{
public string ShowMessage(string strMsg)
{
return strMsg;
}
}
Web 服务在架构上并不更加健壮。但是 WCF 在架构上是 更强大并推广最佳实践。
Web 服务使用 XmlSerializer,但 WCF 使用 DataContractSerializer。哪个是 与 XmlSerializer 相比性能更好?
对于内部(防火墙后)服务到服务调用,我们使用 net:tcp 绑定,比 SOAP 快得多。
WCF 比 ASP.NET Web 服务快 25% — 50%,大约快 25% 比 .NET Remoting 更快。
我什么时候会选择其中一个?
WCF 用于在其他平台上开发并使用其他技术的其他应用程序之间进行通信。
例如,如果我必须将数据从 .net 平台传输到在其他操作系统(如 Unix 或 Linux)上运行的其他应用程序,并且它们使用其他传输协议(如 WAS 或 TCP),那么只有可能使用 WCF 传输数据。
在一个应用程序之间传输数据到另一个应用程序时,这里不受平台、应用程序传输协议的限制。
与 Web 服务相比,安全性非常高
【讨论】:
主要区别在于超时,WCF Service在没有响应的时候已经超时,但是web-service没有这个属性。
【讨论】: