Web服务与WCF服务


Answers:


67

该答案基于不再存在的文章:

文章摘要:

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

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

好吧,WCF符合称为ABC的东西,其中A是您要与之通信的服务的地址,B代表绑定,C代表合同。这很重要,因为可以更改绑定而不必更改代码。合同功能更强大,因为它强制将合同与实施分离。这意味着合同是在接口中定义的,并且有一个具体的实现,使用相同的合同思想,消费者必须遵守该实现。数据模型被抽象出来。”

...稍后...

“当我们需要与其他通信技术(例如,对等,命名管道)而非Web服务进行通信时,应使用WCF”


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 2014年

正如乔的回答->文章ist在codeproject.com/Articles/139787/…上
Bernhard

33

WCF和Web服务之间有什么区别?

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


2
随机说明:DataContractSerializer和XmlSerializer的最大区别是DCS 需要字段排序-这就是为什么我不将DCS用于非临时序列化或合同的原因!因此,当转移到DCS时(或转移到DCS,但顺序与以前使用的顺序不同),有可能破坏不使用固定顺序的客户端使用的服务。当然,这应该在模式中表示,但是..
user2246674

1
另外,请引用/链接资源并注明摘录和/或获取原始信息并用它写一些新的东西。偷东西是不礼貌的。我已为您添加了该链接,但请务必在适当的位置注明该链接!(如果可以的话,我将以此为基础进行
投票

32

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

WCF 还基于SOAP并以XML格式返回数据。它是Web服务(ASMX)的发展,并支持各种协议,例如TCP,HTTP,HTTPS,命名管道,MSMQ。WCF的主要问题在于其繁琐且广泛的配置。它不是开源的,但是任何了解xml的客户端都可以使用它。它可以在应用程序中或IIS上托管,也可以使用窗口服务托管。


WCF还可以使用JSON格式接收/发送http请求/响应,而无需使用SOAP / schemas(如今?)。
Efrain

详细点:SOAP支持HTTPS。编码发生在传输层,因此客户端对此不了解-客户端发出XML请求并获取XML响应,并且既不知道也不关心它是纯HTTP还是加密HTTP。
Jinlye

16

基本和主要的区别是,ASP.NET Web服务被设计为仅通过HTTP交换SOAP消息,而WCF服务可以通过HTTP,TCP,MSMQ或NamedPipes等任何传输协议以任何格式(默认为SOAP)交换消息。


4

Web服务和WCF有什么区别?

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

    但是WCF比ASP.NET Web服务支持更多的协议来传输消息。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 Service在体系结构上并没有更强大。但是WCF在体系结构上更强大,并且可以推广最佳实践。

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

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

    WCF比ASP.NET Web Services快25%-50%,比.NET Remoting快25%。

我什么时候会选择一个?

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

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

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

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


2

主要区别在于超时,WCF服务在没有响应的情况下已超时,但是Web服务没有此属性。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.