Web Service vs WCF Service

What is the difference between them?

When would I opt for one over the other?

144812 次浏览

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

文章摘要:

"Basically, WCF is a service layer that allows you to build applications that can communicate using a variety of communication mechanisms. With it, you can communicate using Peer to Peer, Named Pipes, Web Services and so on.

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

WCF 符合 ABC,其中 A 是您想要通信的服务的地址,B 代表绑定,C 代表契约。这一点很重要,因为可以在不必更改代码的情况下更改绑定。契约的力量要强大得多,因为它迫使契约与实现分离。这意味着契约是在一个接口中定义的,并且有一个具体的实现,使用者使用相同的契约思想来约束这个实现。数据模型被抽象出来了。”

... later ...

”当我们需要与其他通讯技术(例如:。点对点,命名管道)而不是 Web 服务

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

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

WCF 是 Microsoft 所有早期 Web 服务技术的替代品。它的功能也比传统意义上的“ Web 服务”要多得多。

WCF“ Web 服务”是通过 WCF 实现的更广泛的远程通信的一部分。与传统的 ASMX 相比,您将在 WCF 中获得更高程度的灵活性和可移植性,因为 WCF 从头到尾都是为了总结微软提供的所有不同的分布式编程基础架构而设计的。WCF 中的端点可以通过 SOAP/XML 与之进行通信,就像它可以通过 TCP/二进制文件与之进行通信一样容易,更改这个媒介只是一个配置文件模块。理论上,这减少了移植或更改业务需求、目标等时所需的新代码量。

ASMX 比 WCF 更古老,任何 ASMX 都可以做到 WCF (甚至更多)。基本上,你可以看到 WCF 试图将微软世界中两个应用程序通信的所有不同方式进行逻辑组合; ASMX 只是众多方式中的一种,因此现在被归入 WCF 的功能范畴。

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

主要区别在于 Web 服务使用 XmlSerializer。但是 WCF 使用的是 DataContractSerializer,它的性能比 XmlSerializer更好。

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

周转基金 也基于 SOAP 并以 XML 形式返回数据。 它是 Web 服务(ASMX)的发展,支持各种协议,如 TCP、 HTTP、 HTTPS、命名管道、 MSMQ。 WCF 的主要问题是其冗长而广泛的配置。 它不是开源的,但是可以被任何理解 xml 的客户机使用。 它可以托管在应用程序、 IIS 或使用窗口服务中。

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

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

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

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

  2. 要在 Web 服务中开发服务,我们将编写以下代码

    [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 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.

When would I opt for one over the other?

  • WCF is used to communicate between other applications which has been developed on other platforms and using other Technology.

    For example, if I have to transfer data from .net platform to other application which is running on other OS (like Unix or Linux) and they are using other transfer protocol (like WAS, or TCP) Then it is only possible to transfer data using WCF.

  • Here is no restriction of platform, transfer protocol of application while transferring the data between one application to other application.

  • Security is very high as compare to web service