WCF - 与 Web 服务

WCF 和 Web 服务之间存在一些主要差异,如下所示。

  • 属性 − WCF 服务由 ServiceContract 和 OperationContract 属性定义,而 Web 服务由 WebService 和 WebMethod 属性定义。

  • 协议 − WCF 支持一系列协议,即 HTTP、命名管道、TCP 和 MSMQ,而 Web 服务仅支持 HTTP 协议。

  • 托管机制 − WCF 托管有各种激活机制,即 IIS(Internet 信息服务)、WAS(Windows 激活服务)、自托管和 Windows 服务,但 Web 服务仅由 IIS 托管。

  • 服务 − WCF 支持强大的安全性、可信赖的消息传递、事务和互操作性,而 Web 服务仅支持安全服务。

  • 序列化器 − WCF 通过使用 System.Runtime.Serialization 支持 DataContract 序列化器,而 Web 服务通过使用 System.Xml.Serialization 支持 XML 序列化器。

  • 工具 − ServiceMetadata 工具 (svcutil.exe) 用于为 WCF 服务生成客户端,而 WSDL.EXE 工具用于为 Web 服务生成客户端。

  • 异常处理 −在 WCF 中,未处理的异常通过使用 FaultContract 得到更好的处理。它们不会像在 Web 服务中那样作为 SOAP 错误返回到客户端。

  • 哈希表 − 可以在 WCF 中序列化哈希表,但在 Web 服务中并非如此。

  • 绑定 − WCF 支持多种类型的绑定,如 BasicHttpBinding、WSDualHttpBinding、WSHttpBinding 等,而 Web 服务仅支持 SOAP 或 XML。

  • 多线程 − WCF 通过使用 ServiceBehavior 类支持多线程,而在 Web 服务中不支持。

  • 双工服务操作 − WCF 除了支持单向和请求-响应服务操作外,还支持双工服务操作,而 Web 服务不支持双工服务操作。