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 .

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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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