2

これは、サービス/データ コントラクトのバージョン管理のベスト プラクティスに精通しているユーザーにとっては簡単です。このバージョニングを正しい方法で使用することを確認したいと思います。

では、サービス コントラクトがあるとします。

[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 の代わりに DTOCustomer2 を使用して、古いクライアントと新しいクライアントが準拠するようにするにはどうすればよいでしょうか? この場合、何が推奨されますか?サービス契約は変更されますか? 私の知る限り、サービス契約を変更する必要はありません。サービス契約はどのようになりますか? 新しいエンドポイントが必要ですか? 新しいデータ コントラクトを使用する新しい操作コントラクトが必要ですか?

EDIT1: 単に変更する

bool AddCustomer(DTOCustomer1 顧客);

の中へ

bool AddCustomer(DTOCustomer2 顧客);

しましょう?

EDIT2: DTOCustomer2 の名前空間は異なるため、EDIT1 への回答はNoですが、名前空間が同じであれば機能する可能性があります。それでも、ここで何が最善なのかはわかりません。誰かが良い答えを出してくれることを期待しています.

前もって感謝します!

4

2 に答える 2

0

ここで別の質問の助けを借りて、この質問に答えることになりました: WCF - バージョン管理の処理

于 2012-01-11T15:44:14.317 に答える
-1

データ コントラクトのバージョン管理のベスト プラクティスを説明する便利なリンクを見つけてください。

  1. ベスト プラクティス: データ コントラクトのバージョン管理
  2. データ コントラクトのバージョン管理

2 番目のリンクでは、データ コントラクトの属性を追加または削除する場合の処理​​方法と、その他のいくつかのシナリオについて説明しています。

それが役立つことを願っています。

于 2012-01-10T15:13:24.877 に答える