WCF defines four types of contracts:
- Service contracts
- Data contracts
- Fault contracts
- Message contracts
Service contracts
Describe which operations the client can perform on the service.There are two types of Service Contracts.
- ServiceContract - This attribute is used to define the Interface.
- OperationContract - This attribute is used to define the method inside Interface.
[ServiceContract] interface IMyContract { [OperationContract] string MyMethod( ); } class MyService : IMyContract { public string MyMethod( ) { return "Hello World"; } }
Data contracts
Define which data types are passed to and from the service. WCF defines implicit contracts for built-in types such as int and string, but we can easily define explicit opt-in data contracts for custom types.There are two types of Data Contracts.
- DataContract - attribute used to define the class
- DataMember - attribute used to define the properties.
[DataContract] class Contact { [DataMember] public string FirstName; [DataMember] public string LastName; }
If DataMember attributes are not specified for a properties in the class, that property can't be passed to-from web service.