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 服务不支持双工服务操作。