Click here to Skip to main content
14,163,348 members
Click here to Skip to main content
Add your own
alternative version


315 bookmarked
Posted 25 Dec 2010
Licenced CPOL

What's the Difference between WCF and Web Services?

, 26 Dec 2010
Rate this:
Please Sign up or sign in to vote.
Difference between ASP.NET web service and programming WCF services like ASP.NET web services


In this article, I will explain the difference between ASP.NET web service and WCF services like ASP.NET web services. I will also discuss how we use both the technologies for developing the web services.


Web Service in ASP.NET

A Web Service is programmable application logic accessible via standard Web protocols. One of these Web protocols is the Simple Object Access Protocol (SOAP). SOAP is a W3C submitted note (as of May 2000) that uses standards based technologies (XML for data description and HTTP for transport) to encode and transmit application data.

Consumers of a Web Service do not need to know anything about the platform, object model, or programming language used to implement the service; they only need to understand how to send and receive SOAP messages (HTTP and XML).

WCF Service

Windows Communication Foundation (WCF) is a framework for building service-oriented applications. Using WCF, you can send data as asynchronous messages from one service endpoint to another. A service endpoint can be part of a continuously available service hosted by IIS, or it can be a service hosted in an application. An endpoint can be a client of a service that requests data from a service endpoint. The messages can be as simple as a single character or word sent as XML, or as complex as a stream of binary data.

In what scenarios must WCF be used

  • A secure service to process business transactions.
  • A service that supplies current data to others, such as a traffic report or other monitoring service.
  • A chat service that allows two people to communicate or exchange data in real time.
  • A dashboard application that polls one or more services for data and presents it in a logical presentation.
  • Exposing a workflow implemented using Windows Workflow Foundation as a WCF service.
  • A Silverlight application to poll a service for the latest data feeds.

Features of WCF

  • Service Orientation
  • Interoperability
  • Multiple Message Patterns
  • Service Metadata
  • Data Contracts
  • Security
  • Multiple Transports and Encodings
  • Reliable and Queued Messages
  • Durable Messages
  • Transactions
  • AJAX and REST Support
  • Extensibility

Difference between Web Service in ASP.NET & WCF Service

WCF is a replacement for all earlier web service technologies from Microsoft. It also does a lot more than what is traditionally considered as "web services".

WCF "web services" are part of a much broader spectrum of remote communication enabled through WCF. You will get a much higher degree of flexibility and portability doing things in WCF than through traditional ASMX because WCF is designed, from the ground up, to summarize all of the different distributed programming infrastructures offered by Microsoft. An endpoint in WCF can be communicated with just as easily over SOAP/XML as it can over TCP/binary and to change this medium is simply a configuration file mod. In theory, this reduces the amount of new code needed when porting or changing business needs, targets, etc.

ASMX is older than WCF, and anything ASMX can do so can WCF (and more). Basically you can see WCF as trying to logically group together all the different ways of getting two apps to communicate in the world of Microsoft; ASMX was just one of these many ways and so is now grouped under the WCF umbrella of capabilities.

Web Services can be accessed only over HTTP & it works in stateless environment, where WCF is flexible because its services can be hosted in different types of applications. Common scenarios for hosting WCF services are IIS,WAS, Self-hosting, Managed Windows Service.

The major difference is that Web Services Use XmlSerializer. But WCF Uses DataContractSerializer which is better in Performance as compared to XmlSerializer.

Key issues with XmlSerializer to serialize .NET types to XML

  • Only Public fields or Properties of .NET types can be translated into XML
  • Only the classes which implement IEnumerable interface
  • Classes that implement the IDictionary interface, such as Hash table cannot be serialized

Important difference between DataContractSerializer and XMLSerializer

  • A practical benefit of the design of the DataContractSerializer is better performance over Xmlserializer.
  • XML Serialization does not indicate which fields or properties of the type are serialized into XML whereas DataCotractSerializer
  • Explicitly shows the which fields or properties are serialized into XML
  • The DataContractSerializer can translate the HashTable into XML

Using the Code

The development of web service with ASP.NET relies on defining data and relies on the XmlSerializer to transform data to or from a service.

Key issues with XmlSerializer to serialize .NET types to XML

  • Only Public fields or Properties of .NET types can be translated into XML
  • Only the classes which implement IEnumerable interface
  • Classes that implement the IDictionary interface, such as Hash table cannot be serialized

The WCF uses the DataContractAttribute and DataMemeberAttribute to translate .NET FW types into XML.

public class Item 
    public string ItemID; 
    public decimal ItemQuantity; 
    public decimal ItemPrice;

The DataContractAttribute can be applied to the class or a strcture. DataMemberAttribute can be applied to field or a property and theses fields or properties can be either public or private.

Important difference between DataContractSerializer and XMLSerializer.

  • A practical benefit of the design of the DataContractSerializer is better performance over XML serialization.
  • XML Serialization does not indicate which fields or properties of the type are serialized into XML whereas DataContractSerializer explicitly shows which fields or properties are serialized into XML.
  • The DataContractSerializer can translate the HashTable into XML.

Developing Service

To develop a service using ASP.NET, we must add the WebService attribute to the class and WebMethodAttribute to any of the class methods.

public class Service : System.Web.Services.WebService 
      public string Test(string strMsg) 
          return strMsg; 

To develop a service in WCF, we will write the following code:

public interface ITest 
       string ShowMessage(string strMsg); 
public class Service : ITest 
       public string ShowMessage(string strMsg) 
          return strMsg; 

The ServiceContractAttribute specifies that an interface defines a WCF service contract,
OperationContract attribute indicates which of the methods of the interface defines the operations of the service contract.

A class that implements the service contract is referred to as a service type in WCF.

Hosting the Service

ASP.NET web services are compiled into a class library assembly and a service file with an extension .asmx will have the code for the service. The service file is copied into the root of the ASP.NET application and Assembly will be copied to the bin directory. The application is accessible using URL of the service file.

WCF Service can be hosted within IIS or WindowsActivationService.

  • Compile the service type into a class library
  • Copy the service file with an extension .SVC into a virtual directory and assembly into bin sub directory of the virtual directory.
  • Copy the web.config file into the virtual directory.

Client Development

Clients for the ASP.NET Web services are generated using the command-line tool WSDL.EXE.

WCF uses the ServiceMetadata tool (svcutil.exe) to generate the client for the service.

Message Representation

The Header of the SOAP Message can be customized in ASP.NET Web service.

WCF provides attributes MessageContractAttribute, MessageHeaderAttribute and MessageBodyMemberAttribute to describe the structure of the SOAP Message.

Service Description

Issuing a HTTP GET Request with query WSDL causes ASP.NET to generate WSDL to describe the service. It returns the WSDL as a response to the request.

The generated WSDL can be customized by deriving the class of ServiceDescriptionFormatExtension.

Issuing a Request with the query WSDL for the .svc file generates the WSDL. The WSDL that generated by WCF can be customized by using ServiceMetadataBehavior class.

Exception Handling

In ASP.NET Web services, unhandled exceptions are returned to the client as SOAP faults.

In WCF Services, 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.


  • 26th December, 2010: Initial post


This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


About the Author

Yatin V Patil
Software Developer (Senior) Infosys Technologies Limited
India India
I am working as a Technology Analyst at Infosys technologies,Pune. I used to work on C#,,WCF,WPF,Sharepoint,PHP,Perl.

I blogs at .

You can follow me

I am reachable at

You may also be interested in...


Comments and Discussions

GeneralMy vote of 5 Pin
Savalia Manoj M26-Nov-12 17:00
memberSavalia Manoj M26-Nov-12 17:00 
GeneralMy vote of 4 Pin
Chamila Nishantha19-Nov-12 22:58
memberChamila Nishantha19-Nov-12 22:58 
GeneralMy vote of 5 Pin
Member 307459812-Oct-12 5:23
memberMember 307459812-Oct-12 5:23 
Questiongood article Pin
Elanchezian24-Sep-12 3:04
memberElanchezian24-Sep-12 3:04 
Generalgood article Pin
vishal.shimpi16-Sep-12 18:32
membervishal.shimpi16-Sep-12 18:32 
GeneralMy vote of 5 Pin
Farhan Ghumra22-Aug-12 23:01
memberFarhan Ghumra22-Aug-12 23:01 
Generalexcellent Pin
initCode28-May-12 21:32
memberinitCode28-May-12 21:32 
GeneralExcellent Article ...Patil..! Pin
_Tushar Patil8-May-12 20:59
member_Tushar Patil8-May-12 20:59 
Easy To Understand Diff...Thanks For Article Thumbs Up | :thumbsup:
Tushar Patil
Failure is not the end it is the time Required to get Success.

GeneralMy vote of 5 Pin
sujatapant1526-Apr-12 1:41
membersujatapant1526-Apr-12 1:41 
GeneralMy vote of 4 Pin
Member 877148431-Mar-12 1:37
memberMember 877148431-Mar-12 1:37 
Questiongood work Pin
yazanjaradat27-Mar-12 4:29
memberyazanjaradat27-Mar-12 4:29 
GeneralMy vote of 5 Pin
Reza Ahmadi17-Mar-12 1:34
memberReza Ahmadi17-Mar-12 1:34 
QuestionConcurrency and Sessions Pin
Dave Kerr7-Mar-12 2:40
mvaDave Kerr7-Mar-12 2:40 
QuestionGood Article if you want concise 14 differences between WCF service and webservice Pin
Manishav33886-Mar-12 21:49
memberManishav33886-Mar-12 21:49 
QuestionGood article. Pin
rohit kakria27-Feb-12 19:41
memberrohit kakria27-Feb-12 19:41 
AnswerRe: Good article. Pin
Manishav33886-Mar-12 4:10
memberManishav33886-Mar-12 4:10 
GeneralMy vote of 4 Pin
coded0078-Jan-12 23:15
professionalcoded0078-Jan-12 23:15 
GeneralMy vote of 4 Pin
Narayan D Mali3-Jan-12 1:29
memberNarayan D Mali3-Jan-12 1:29 
QuestionWell Done Pin
Dave Kerr31-Dec-11 20:41
mvaDave Kerr31-Dec-11 20:41 
GeneralAdding the attribute WebService and WebMethodAttribute to an Interface Pin
Member 833794017-Nov-11 21:58
memberMember 833794017-Nov-11 21:58 
QuestionQuestion Pin
NGLara5-Oct-11 8:08
memberNGLara5-Oct-11 8:08 
AnswerRe: Question Pin
Jaydeep Jadav5-Mar-13 20:14
memberJaydeep Jadav5-Mar-13 20:14 
GeneralMy vote of 5 Pin
milesganesh19-May-11 3:11
membermilesganesh19-May-11 3:11 
GeneralMy vote of 1 Pin
chetanRock17-May-11 20:22
memberchetanRock17-May-11 20:22 
GeneralRe: My vote of 1 Pin
Damith Gunawardana13-Jul-11 6:15
memberDamith Gunawardana13-Jul-11 6:15 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

Permalink | Advertise | Privacy | Cookies | Terms of Use | Mobile
Web02 | 2.8.190518.1 | Last Updated 26 Dec 2010
Article Copyright 2010 by Yatin V Patil
Everything else Copyright © CodeProject, 1999-2019
Layout: fixed | fluid