他们之间有什么区别?
我什么时候选择一个而不是另一个?
答案 0 :(得分:63)
此答案基于不再存在的文章:
文章摘要:
“基本上,WCF是一个服务层,允许您构建可以使用各种通信机制进行通信的应用程序。通过它,您可以使用Peer to Peer,命名管道,Web服务等进行通信。
您无法比较它们,因为WCF是用于构建可互操作应用程序的框架。如果您愿意,可以将其视为SOA推动者。这是什么意思?
嗯,WCF符合ABC的要求,其中A是您要与之通信的服务的地址,B代表绑定,C代表合同。这很重要,因为可以在不必更改代码的情况下更改绑定。合同更加强大,因为它迫使合同与实施分离。这意味着合同是在一个接口中定义的,并且有一个具体的实现,消费者使用相同的合同理念绑定。数据模型被抽象出来。“
...稍后......
“当我们需要与其他通信技术(例如,Peer to Peer,命名管道)而不是Web服务进行通信时,应该使用WCF”
答案 1 :(得分:30)
来自What's the Difference between WCF and Web Services?
WCF是Microsoft所有早期Web服务技术的替代品。它的功能远远超过传统上被视为“网络服务”的功能。
WCF“Web服务”是通过WCF启用的更广泛的远程通信范围的一部分。与传统的ASMX相比,您将在WCF中获得更高程度的灵活性和可移植性,因为WCF是从头开始设计的,用于总结Microsoft提供的所有不同的分布式编程基础架构。 WCF中的端点可以通过SOAP / XML与TCP /二进制文件一样轻松地进行通信,并且更改此介质只是一个配置文件mod。从理论上讲,这可以减少移植或更改业务需求,目标等所需的新代码量。
ASMX比WCF旧,ASMX可以执行的任何操作都可以是WCF(以及更多)。基本上你可以看到WCF试图将所有不同的方式组合在一起,让两个应用程序在微软世界中进行通信; ASMX只是众多方式中的一种,因此现在归入WCF的能力范围。
只能通过HTTP访问Web服务。它在无状态环境中工作,WCF非常灵活,因为它的服务可以托管在不同类型的应用程序中。托管WCF服务的常见方案是IIS,WAS,自托管,托管Windows服务。
主要区别在于Web服务使用
XmlSerializer
。但是WCF使用DataContractSerializer
,与XmlSerializer
相比,性能更好。
答案 2 :(得分:29)
网络服务 基于SOAP并以XML格式返回数据。 它仅支持HTTP协议。 它不是开源的,但可以被任何理解xml的客户端使用。 它只能在IIS上托管。
<强> WCF 强> 也基于SOAP并以XML形式返回数据。 它是Web服务(ASMX)的发展,支持TCP,HTTP,HTTPS,命名管道,MSMQ等各种协议。 WCF的主要问题是其繁琐而广泛的配置。 它不是开源的,但可以被任何理解xml的客户端使用。 它可以在应用程序中或在IIS上或使用窗口服务托管。
答案 3 :(得分:15)
基本和主要区别在于,ASP.NET Web服务旨在通过HTTP交换SOAP消息,而WCF服务可以通过任何传输协议(即HTTP,TCP,MSMQ或NamedPipes等)使用任何格式(默认为SOAP)交换消息
答案 4 :(得分:4)
Web服务和WCF之间有什么区别?
Web服务在将数据从一个应用程序传输到其他应用程序时仅使用HTTP协议。
但是,与ASP.NET Web服务相比,WCF支持更多用于传输消息的协议。 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传输数据。
在将一个应用程序之间的数据传输到其他应用程序时,这里没有对平台,传输协议的限制。
与网络服务相比,安全性非常高
答案 5 :(得分:1)
主要区别是超时,当没有响应时WCF服务已超时,但Web服务没有此属性。