Web Service与WCF Service的区别

114

它们之间有什么区别?

我什么情况下会选择其中的一个?


查看此处的其他讨论以获取更多信息... https://dev59.com/iHVD5IYBdhLWcg3wNY1Z - Kwal
6个回答

69

这个答案是基于一篇已经不存在的文章:

文章概述:

"WCF基本上是一个服务层,允许您构建可以使用各种通信机制进行通信的应用程序。使用它,您可以使用Peer to Peer、命名管道、Web服务等进行通信。

您不能将它们进行比较,因为WCF是一个构建互操作应用程序的框架。如果您愿意,可以将其视为SOA启用器。这是什么意思?

嗯,WCF符合所谓的ABC,其中A是您要通信的服务的地址,B代表绑定,C代表协议。这很重要,因为可以在不改变代码的情况下更改绑定。协议要强大得多,因为它强制将协议与实现分离。这意味着协议在接口中定义,并且有一个具体的实现,由使用相同协议思想的消费者进行绑定。数据模型被抽象出来."

... 稍后 ...

"当我们需要与其他通信技术(例如点对点、命名管道)进行通信时,应该使用WCF而不是Web服务"


2
对于任何基于SOA方法的新项目,开发人员应该选择WCF而不是Web服务。因为它为未来的使用提供了灵活性和可扩展性。只有一个例外:如果客户端不支持与WCF服务通信,即Flash AS2。 - Lalit
WCF
  1. 它是一个多层架构
  2. 它提供了一个单一的统一平台(可互操作)或框架,用于构建面向服务的应用程序,以使用各种网络协议进行通信。
  3. 与Web服务或ASMX服务相比,WCF提供更好的安全性和可靠性
  4. 支持纯XML、Ajax和REST
Web服务
  1. 它很简单
  2. 编写一个函数并将其与[WebMethod]属性挂钩,它就可以提供服务
- Arun Banik
从Joe的回答中得知 -> 这篇文章已经被复制到http://www.codeproject.com/Articles/139787/What-s-the-Difference-between-WCF-and-Web-Services。 - Bernhard

33

来自WCF和Web服务之间的区别是什么?

WCF是微软替代所有早期Web服务技术的新技术。它要比传统上认为的“Web服务”做更多的事情。

WCF“Web服务”是通过WCF启用的更广泛的远程通讯范围的一部分。在WCF中完成任务可以获得比传统ASMX更高度的灵活性和可移植性。因为WCF从根本上设计了微软提供的所有不同的分布式编程基础设施的总结。WCF中的端点可以像SOAP/XML一样轻松地进行通信,也可以像TCP/binary一样进行通信。而改变这个媒介只是简单的配置文件修改。理论上,这减少了在移植或更改业务需求、目标等时所需的新代码数量。

ASMX比WCF旧,但任何ASMX能做到的WCF都能做到(更多)。基本上,您可以将WCF视为试图在微软的应用程序通讯方式中逻辑地组合所有不同的方法;ASMX只是这许多方法中的一个,因此现在被归为WCF功能的一部分。

Web服务只能通过HTTP访问,且它在无状态环境下工作,而WCF则灵活,因为它的服务可以托管在不同类型的应用程序中。托管WCF服务的常见场景是IIS、WAS、自托管和托管Windows服务。

主要区别在于,Web服务使用XmlSerializer,但WCF使用DataContractSerializer,后者在性能上比前者更好。


2
随机笔记:DataContractSerializer和XmlSerializer之间的一个重大区别是DCS 需要字段排序 - 这就是为什么我不使用DCS进行非瞬态序列化或合同的原因!因此,在转换到DCS时(或按不同顺序移动到DCS),可能会破坏由未使用固定顺序的客户端使用的服务。当然,这应该在模式中表示,但是.. - user2246674
1
此外,请引用/链接来源并指出摘录和/或采用原始信息并以新的方式编写。抄袭是不礼貌的。我已经为您添加了链接,但请确保在应该给予信用的地方给予信用!(如果可以的话,我会基于这个理由投反对票。) - user2246674

31

Web服务 基于SOAP协议,在XML格式中返回数据。 仅支持HTTP协议。 它不是开源的,但可以被任何理解XML的客户端使用。 它只能在IIS上托管。

WCF 也基于SOAP协议,在XML格式中返回数据。 它是Web服务(ASMX)的演化版本,并支持多种协议,如TCP、HTTP、HTTPS、Named Pipes、MSMQ。 WCF的主要问题是繁琐而广泛的配置。 它不是开源的,但可以被任何理解XML的客户端使用。 它可以在应用程序内部、在IIS上或使用Windows服务进行托管。


2
WCF也可以接收/发送JSON格式的HTTP请求/响应,而无需使用SOAP /模式(现在?)。 - Efrain
细节要点:SOAP支持HTTPS。编码发生在传输层,因此客户端对此是不可知的 - 客户端发出XML请求并获取XML响应,它既不知道也不关心是否在传输过程中使用了普通的http或加密的https。 - Jinlye

16

ASP.NET Web服务和WCF服务的基本区别在于,ASP.NET Web服务仅设计用于在HTTP上交换SOAP消息,而WCF服务可以使用任何格式(默认为SOAP)在任何传输协议上进行消息交换,例如HTTP、TCP、MSMQ或NamedPipes等。


5
什么是Web服务和WCF的区别?
  1. Web service use only HTTP protocol while transferring data from one application to other application.

    But WCF supports more protocols for transporting messages than ASP.NET Web services. WCF supports sending messages by using HTTP, as well as the Transmission Control Protocol (TCP), named pipes, and Microsoft Message Queuing (MSMQ).

  2. To develop a service in Web Service, we will write the following code

    [WebService]
    public class Service : System.Web.Services.WebService
    {
      [WebMethod]
      public string Test(string strMsg)
      {
        return strMsg;
      }
    }
    

    To develop a service in WCF, we will write the following code

    [ServiceContract]
    public interface ITest
    {
      [OperationContract]
      string ShowMessage(string strMsg);
    }
    public class Service : ITest
    {
      public string ShowMessage(string strMsg)
      {
         return strMsg;
      }
    }
    
  3. Web Service is not architecturally more robust. But WCF is architecturally more robust and promotes best practices.

  4. Web Services use XmlSerializer but WCF uses DataContractSerializer. Which is better in performance as compared to XmlSerializer?

  5. For internal (behind firewall) service-to-service calls we use the net:tcp binding, which is much faster than SOAP.

    WCF is 25%—50% faster than ASP.NET Web Services, and approximately 25% faster than .NET Remoting.

当需要在不同平台、使用不同技术的应用程序之间进行通信时,可以选择使用WCF。例如,如果我需要将数据从.net平台传输到运行在其他操作系统(如Unix或Linux)上并使用其他传输协议(如WAS或TCP)的应用程序,则只能使用WCF来传输数据。在传输数据时,不受平台、传输协议或应用程序的限制。与Web服务相比,安全性非常高。

3
主要区别在于超时,当没有响应时WCF服务会超时,但是Web服务没有这个属性。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接