Contracts are useful for building WCF service applications. They define what the protocol (binding) the service uses, how the communication will be done, what message exchange format to use and so on.
The following are the contracts are available in WCF:
- Service contracts
- Data Contracts
- Message contracts
- Fault Contract
- Operation Contract
Service contracts
Service contracts define the Interface for the service. It can be defined as follows.
Syntax
- [ServiceContract]
- public interface IService1
- {
- // TODO: Add your service operations here
- }
- Any WCF service can have more than one service contract.
- Declare at least one service contract in a service.
- A service contract can be declared using the [ServiceContract] attribute.
- It allows defining an Operation Contract under it to expose the service outside the world.
- It maps the interface and methods of your service to a platform-independent description.
- It describes message exchange patterns that the service can have with another party. Some service operations might be one-way, others might require a request-reply pattern.
The service contract attribute has the following properties:
- CallbackContract
- ConfigurationName
- HasProtectionLevel
- Name
- Namespace
- ProtectionLevel
- SessionMode
- TypeId
Operation Contract
An Operation Contract defines the method exposed to the client to exchange the information between the client and server. An Operation Contract describes what functionality is to be given to the client, such as addition, subtraction and so on.
It can be defined as in the following:
- public interface IService1
- {
- [OperationContract]
- string GetData(int value);
- [OperationContract]
- CompositeType GetDataUsingDataContract(CompositeType composite);
- }
The Operation Contract attribute has the following properties:
- CallbackContract: Gets or sets the type of callback contract when the contract is a duplex contract.
- ConfigurationName: Gets or sets the name used to locate the service in an application configuration file.
- HasProtectionLevel: Gets a value that indicates whether the member has a protection level assigned.
- Name: Gets or sets the name of the <portType> element in the Web Services Description Language (WSDL).
- Namespace: Gets or sets the namespace of the <portType> element in the Web Services Description Language (WSDL).
- ProtectionLevel: Specifies whether the binding for the contract must support the value of the ProtectionLevel property.
- SessionMode: Gets or sets whether sessions are allowed, not allowed or required.
- TypeId: When implemented in a derived class, gets a unique identifier for this Attribute.
Data Contract
Data Contracts define the data type for variables that are the same as get and set properties but the difference is that a Data Contract in WCF is used to serialize and deserialize the complex data. It defines how data types are serialized and deserialized. Using serialization, you can convert an object into a sequence of bytes that can be transmitted over a network. Using de-serialization, you reassemble an object from a sequence of bytes that you receive from a calling application.
It can be defined as follows:
- [DataContract]
- public class Student
- {
- private string _Name;
- private string _City;
- [DataMember]
- public string Name
- {
- get { return _Name; }
- set { _Name = value; }
- }
- }

Vithal WadjePosted Oct 8, 2015, 10:58 AM
Thanks
SharadPosted Jul 22, 2015, 12:24 AM
good one...
Vithal WadjePosted Jun 11, 2015, 2:40 PM
thanks Nitin Tyagi sir
Vithal WadjePosted Jun 11, 2015, 2:39 PM
thanks Santhakumar Munuswamy sir
Vithal WadjePosted Jun 11, 2015, 2:38 PM
thanks Lalit Raghav sir
Vithal WadjePosted Jun 11, 2015, 2:38 PM
Thanks Khan Abrar Ahmed sir
NitinPosted Jun 11, 2015, 7:35 AM
good one
Santhakumar MunuswamyPosted Jun 10, 2015, 3:10 PM
Thanks for nice one
Lalit RaghavPosted Jun 10, 2015, 5:05 AM
knowledgeable
Khan Abrar AhmedPosted Jun 10, 2015, 4:52 AM
Nice artical Sir,