There are two types of contracts
- Behavioral Contract
- Structural Contract
Behavioral Contract:
- Service Contract
- Operation Contract
- Fault Contract
Structural Contract:
- Data Contract
- Message Contract
Message Contract: Developer mostly uses DataContract but whenever we require more control over soap message MessageContract comes into picture.
Using MessageContract you can define header and body members of soap message that wcf inserts in soap message.
Note: When using message contract with a operationcontract
Either only messagecontract can be used as parameter and return value or nothing as parameter or return type.
Either only messagecontract can be used as parameter and return value or nothing as parameter or return type.
[MessageContract]
public class UserInfoRequestMessage
{
[MessageHeader()]
public string UserAuthCode;
[MessageBodyMember()]
public int UserId;
}
[MessageContract]
public class UserInfoResponseMessage
{
[MessageBodyMember()]
public UserInfo MyUserInfo;
}
[ServiceContract]
public interface IUserService
{
[OperationContract]
UserInfoResponseMessage GetUserById(UserInfoRequestMessage usrInfoMessage);
}
public class UserService : IUserService
{
public UserInfoResponseMessage GetUserById(UserInfoRequestMessage usrInfoMessage)
{
//Method
implementation
}
}