Answers:
该答案基于不再存在的文章:
文章摘要:
“基本上,WCF是一个服务层,使您可以构建可以使用各种通信机制进行通信的应用程序。使用它,您可以使用对等,命名管道,Web服务等进行通信。
您无法将它们进行比较,因为WCF是用于构建可互操作的应用程序的框架。如果愿意,您可以将其视为SOA支持器。这是什么意思?
好吧,WCF符合称为ABC的东西,其中A是您要与之通信的服务的地址,B代表绑定,C代表合同。这很重要,因为可以更改绑定而不必更改代码。合同功能更强大,因为它强制将合同与实施分离。这意味着合同是在接口中定义的,并且有一个具体的实现,使用相同的合同思想,消费者必须遵守该实现。数据模型被抽象出来。”
...稍后...
“当我们需要与其他通信技术(例如,对等,命名管道)而非Web服务进行通信时,应使用WCF”
WCF替代了Microsoft的所有早期Web服务技术。它的功能还远远超过了传统上所谓的“ Web服务”。
WCF“ Web服务”是通过WCF启用的更广泛的远程通信范围的一部分。与通过传统的ASMX相比,在WCF中处理服务器的灵活性和可移植性要高得多,因为WCF从头开始设计是用来总结Microsoft提供的所有不同的分布式编程基础结构。WCF中的端点可以通过SOAP / XML进行通信,就像通过TCP / binary进行通信一样容易,而更改此媒体仅是配置文件mod。从理论上讲,这减少了在移植或更改业务需求,目标等时所需的新代码量。
ASMX比WCF古老,而ASMX可以做到的一切都可以使WCF(甚至更多)成为可能。基本上,您可以看到WCF试图在逻辑上将Microsoft应用程序中使两个应用程序进行通信的所有不同方式分组在一起;ASMX只是众多方法中的一种,因此现在被归类为WCF的功能范围。
Web服务只能通过HTTP进行访问,并且可以在无状态环境中使用,因为WCF可以在不同类型的应用程序中托管,因此WCF十分灵活。托管WCF服务的常见方案是IIS,WAS,自托管,托管Windows服务。
主要区别在于Web服务的使用
XmlSerializer
。但是WCF使用的DataContractSerializer
性能优于XmlSerializer
。
Web Service 基于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 Service在体系结构上并没有更强大。但是WCF在体系结构上更强大,并且可以推广最佳实践。
Web服务使用XmlSerializer,但是WCF使用DataContractSerializer。与XmlSerializer相比,哪个性能更好?
对于内部(在防火墙之后)服务到服务的调用,我们使用net:tcp绑定,它比SOAP快得多。
WCF比ASP.NET Web Services快25%-50%,比.NET Remoting快25%。
我什么时候会选择一个?
WCF用于在其他平台和使用其他技术开发的其他应用程序之间进行通信。
例如,如果我必须将数据从.net平台传输到在其他操作系统(例如Unix或Linux)上运行的其他应用程序,并且它们正在使用其他传输协议(例如WAS或TCP),则只能传输数据使用WCF。
在将一个应用程序之间的数据传输到另一应用程序时,这里没有平台,应用程序的传输协议的限制。
与网络服务相比,安全性很高