WCF - Versus Web Service

Esistono alcune differenze principali tra WCF e un servizio Web elencati di seguito.

  • Attributes - Il servizio WCF è definito dagli attributi ServiceContract e OperationContract, mentre un servizio Web è definito dagli attributi WebService e WebMethod.

  • Protocols - WCF supporta una gamma di protocolli, ad esempio HTTP, Named Pipes, TCP e MSMQ, mentre un servizio Web supporta solo il protocollo HTTP.

  • Hosting Mechanisms - Esistono vari meccanismi di attivazione per l'hosting WCF, ad esempio IIS (Internet Information Service), WAS (Windows Activation Service), Self-hosting e Windows Service, ma un servizio web è ospitato solo da IIS.

  • Services - WCF supporta una solida sicurezza, messaggistica affidabile, transazioni e interoperabilità, mentre un servizio Web supporta solo servizi di sicurezza.

  • Serializer - WCF Supporta il serializzatore DataContract utilizzando System.Runtime.Serialization, mentre un servizio Web supporta il serializzatore XML facendo uso di System.Xml.Serialization.

  • Tools - Lo strumento ServiceMetadata (svcutil.exe) viene utilizzato per la generazione di client per un servizio WCF, mentre lo strumento WSDL.EXE viene utilizzato per generare lo stesso per un servizio Web.

  • Exception Handling- In WCF, le eccezioni non gestite vengono gestite in modo migliore utilizzando FaultContract. Non tornano al client come in un servizio web come errori SOAP.

  • Hash Table - È possibile serializzare una tabella hash in WCF, ma questo non è il caso di un servizio web.

  • Bindings - WCF supporta diversi tipi di binding come BasicHttpBinding, WSDualHttpBinding, WSHttpBinding e così via, mentre un servizio web supporta solo SOAP o XML.

  • Multithreading - WCF supporta il multithreading utilizzando la classe ServiceBehavior, mentre questo non è supportato in un servizio Web.

  • Duplex Service Operations - WCF supporta le operazioni di servizio duplex oltre a supportare le operazioni di servizio unidirezionale e di richiesta-risposta, mentre un servizio Web non supporta le operazioni di servizio duplex.