Domanda

Questo dovrebbe essere facile per qualcuno familiarità con le migliori pratiche di controllo delle versioni dei contratti di servizio / dati. Voglio fare in modo che userò questo delle versioni in modo corretto.

Quindi, diciamo che abbiamo un contratto di servizio:

[ServiceContract(Namespace="http://api.x.com/Svc1")]
public interface IService1
{
   [OperationContract(Name = "AddCustomer")]
   bool AddCustomer(DTOCustomer1 customer);
}

e contratto di dati:

[DataContract(Name="Customer", Namespace="http://api.x.com/Svc1/2011/01/DTO")]
public class DTOCustomer1
{
   [DataMember(Name="Name")]
   public string Name { ... }
}

se ho davvero bisogno di cambiare quest'ultima in qualcosa d'altro: (il seguente è solo esempio)

[DataContract(Name="Customer", Namespace="http://api.x.com/Svc1/2012/01/DTO")]
public class DTOCustomer2
{
   [DataMember(Name="Name")]
   public string Name { ... }

   [DataMember(Name="Address")]
   public DTOAddress Address { ... }
}

... allora come farò io uso DTOCustomer2 anziché DTOCustomer1 dal servizio in modo che vecchi e nuovi clienti saranno compatibili? Quello che si consiglia in questo caso? Sarà il mio contratto di servizio cambiamento? Per quanto ne so io, non sarà necessario modificare il contratto di servizio. Come sarà il contratto di servizio assomigliare? Ho bisogno di un nuovo endpoint? Ho bisogno di una nuova facendo uso del contratto il funzionamento del nuovo contratto di dati?

Edit1: Semplicemente cambiando

bool AddCustomer (cliente DTOCustomer1);

in

bool AddCustomer (cliente DTOCustomer2);

farà?

EDIT2: Risposta a EDIT1 è No , in quanto DTOCustomer2 ha spazio dei nomi diversi, ma potrebbe funzionare se ha lo stesso spazio dei nomi. Ancora non so qual è la cosa migliore qui e aspetto che qualcuno a venire con una buona risposta.

Grazie in anticipo!

È stato utile?

Soluzione

Ho finito per rispondere a questa domanda con l'aiuto di un'altra domanda qui: WCF - maniglia delle versioni

Altri suggerimenti

Si prega di trovare alcuni link utili che descrivono la migliore pratica per il contract dati delle versioni.

  1. Best Practices: contratto dati delle versioni
  2. contratto dati delle versioni

Il secondo link descrive su come gestire quando si desidera aggiungere o attributi rimossi del contratto dei dati e pochi altri scenari.

La speranza che aiuta.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top