Web服务与WCF服务

时间:2008-12-08 23:34:10

标签: wcf web-services

他们之间有什么区别?

我什么时候选择一个而不是另一个?

6 个答案:

答案 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之间有什么区别?

  1. Web服务在将数据从一个应用程序传输到其他应用程序时仅使用HTTP协议。

    但是,与ASP.NET Web服务相比,WCF支持更多用于传输消息的协议。 WCF支持使用HTTP发送消息,以及传输控制协议(TCP),命名管道和Microsoft消息队列(MSMQ)。

  2. 要在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; } }

  3. Web服务在体系结构上并不健全。但WCF在架构上是 更加强大并推广最佳实践。

  4. Web服务使用XmlSerializer,但WCF使用DataContractSerializer。这是 与XmlSerializer相比,性能更好吗?

  5. 对于内部(防火墙后)服务到服务呼叫,我们使用net:tcp 绑定,比SOAP快得多。

    WCF比ASP.NET Web服务快25%-50%,大约25% 比.NET Remoting更快。

  6.   

    我什么时候选择一个而不是另一个?

    • WCF用于在其他平台上开发的其他应用程序之间进行通信。

      例如,如果我必须将数据从.net平台传输到在其他操作系统(如Unix或Linux)上运行的其他应用程序,并且他们正在使用其他传输协议(如WAS或TCP)那么它只能是使用WCF传输数据。

    • 在将一个应用程序之间的数据传输到其他应用程序时,这里没有对平台,传输协议的限制。

    • 与网络服务相比,安全性非常高

答案 5 :(得分:1)

主要区别是超时,当没有响应时WCF服务已超时,但Web服务没有此属性。