Data contract ou message contract
Bonjour à tous,
Cela fait déjà plusieurs jours que je me demande quel type de contrat entre Data contract ou Message contract est le plus adapté à mon utilisation. Je tiens à signaler que je suis encore novice avec WCF :D.
A priori le Message contract ne serai pas ce que je veux, car je n'ai pas besoin d'agir sur le corp/en-tête du message SOAP, mais cela permet d'avoir un système de requête réponse qui apporte une certaine souplesse en cas de modifications:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| [MessageContract]
public class CustomerRequest
{
[MessageBodyMember]
public int Id;
}
[MessageContract]
public class CustomerResponse
{
[MessageBodyMember]
public int Id;
[MessageBodyMember]
public string Name;
}
[ServiceContract]
public interface ICustomer
{
[OperationContract]
public CustomerResponse GetCustomer(CustomerRequest request);
} |
En fait la vrai question est de savoir si je peux utiliser des objets DTO pour garder la souplesse du code ci dessus, ou bien cela n'est pas recommandé :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
|
[DataContract]
public class CustomerRequest
{
[DataMember]
public int Id;
}
[DataContract]
public class CustomerResponse
{
[DataMember]
public int Id;
[DataMember]
public string Name;
}
[ServiceContract]
public interface ICustomer
{
[OperationContract]
public CustomerResponse GetCustomer(CustomerRequest request);
} |
Dans le cas ou je pourrai utiliser le data contract et que je ne souhaite pas de paramètre entrant, vaut t'il quand même mieux mettre CustomerRequest, quitte a ce qu'il ne soit pas utile ?
Au final je cherche une bonne pratique pour avoir de la souplesse et de la simplicité.
Merci de me conseiller, je m'arrache les cheveux :P