2012-01-10 6 views
2

これは、バージョン管理サービス/データ契約のベストプラクティスに精通している人にとっては簡単です。私はこのバージョン管理を正しい方法で使用することを確認したいと思います。だから、WCF - バージョン管理(例)

、我々はサービス契約を結んでいるとしましょう:

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

とデータコントラクト:

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

私は本当に何か他のものに後者を変更する必要がある場合:(以下は一例です)

[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 { ... } 
} 

...次に、私はDTOCustomer1の代わりにDTOCustomer1を使用します古いクライアントと新しいクライアントが準拠するようにするこの場合には何が推奨されますか?私のサービス契約は変わるでしょうか? AFAIK私はサービス契約を変更する必要はありません。サービス契約はどのように見えるのですか?新しいエンドポイントが必要ですか?新しいデータ契約を利用して新しいオペレーション契約が必要ですか?

EDIT1: 単に

ブールAddCustomer(DTOCustomer1顧客)を変更します。

BOOL AddCustomer(DTOCustomer2顧客)に

は致しますか?

EDIT2:DTOCustomer2は異なる名前空間を持つためEDIT1に 回答は、ノーであるが、それは同じ名前空間を持っている場合、それがうまくいくかもしれません。それでも私はここで何が最善であるか分かりませんし、誰かが良い答えを出すことを期待しています。

ありがとうございます!

答えて

-1

データ契約バージョン管理のベストプラクティスを説明する便利なリンクがあります。

  1. Best Practices: Data Contract Versioning
  2. Data Contract Versioning

第二リンクはあなたのデータコントラクトおよびその他のいくつかのシナリオの属性を追加または削除したいときに、どのように処理するかについて説明します。

希望に役立ちます。

+0

は、あなたの答えをありがとう...私はすでにあなたの投稿のリンクから記事を読んだが、それでも私は理解していません私の例のためにそれらを適用する方法。 – Learner