Difference between WCF and Web Service

Difference between WCF and Web Service

WCF
Web Service
To define WCF,   ServiceContract, DataContract and OperationContract attributes are used

[ServiceContract]
public interface IService1
{
    [OperationContract]
    string GetData(int value);
}
    
[DataContract]
public class CompositeType
{
    bool boolValue = true;
    [DataMember]
    public bool BoolValue
    {
        get { return boolValue; }
        set { boolValue = value; }
    }
}
public class Service1 : IService1
{
    public string GetData(int value)
    {
        return value.ToString();           
    }
}
To define Web Service, WebMethod and WebService attributes are used.

[WebService]
public class Service : System.Web.Services.WebService
{
    [WebMethod]
    public string GetData(int value)
    {
        return string.Format("You entered: {0}", value);
    }
}

 

Supports different bindings like BasicHttp, WSHttpBinding,WSDualHttpBinding etc. Used only SOAP and XML.
Hosted in IIS, Self Hosting, Windows Service, WAP(Windows Activation Service) Hosted in IIS.
Access through HTTP, TCP, MSMQ, P2P, Named Pipes.  Access through HTTP.
Supports Security, reliable messaging, transactions, durable messages, service orientation, interoperability, service metadata, AJAX and REST support and extensibility Supports only Security Services.
Use Service Metadata tool(svcutil.exe) to generate the client for service. Uses command line tool WSDL.EXE to generate the client for service.
Unhandled exceptions are not returned to clients as soap faults. A configuration setting is provided to have the unhandled exceptions returned to clients for the purpose of debugging.  Unhandled exceptions are returned to the client as soap fault.
Generated WSDL can customized by using ServiceMetadataBehavior class.  Generated WSDL can be customized by using ServiceDescriptionFomratException class.
System.RunTime.Serailization is supported

* Better Performance
* DataContractAttribute and DataMemberAttribute can be added to .NET framework types to indicate that instances of the type are to be serialized into XML and which particular fields or properties of the type are to be serialized.
* Classes that implement the IDictionary interface can be serialized.
* Hash table can be serialized.

 System.XML.Serialization is supported.
* Worst performance
* Only Public fields or Properties of .NET types can be translated into XML.
* Only the classes which implement IEnumerable and ICollection interface can be serialized.
Can be Multi-Threaded using ServiceBehavior class. Can’t be Multi-Threaded.

Hello friends, let me update if I have missed anything.

Leave a Reply