WCF-契約バージョン(例による)
-
26-10-2019 - |
質問
これは、バージョンサービス/データ契約のベストプラクティスに精通している人にとって簡単なはずです。このバージョンを正しい方法で使用することを確認したいと思います。
したがって、サービス契約があるとしましょう。
[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を使用するにはどうすればよいですか?この場合、何が推奨されますか?私のサービス契約は変更されますか? AFAIKサービス契約を変更する必要はありません。サービス契約はどのように見えますか?新しいエンドポイントが必要ですか?新しいデータ契約を利用する新しいオペレーション契約が必要ですか?
編集1:単に変化します
bool addcustomer(dtocustomer1 Customer);
の中へ
bool addcustomer(dtocustomer2 Customer);
しましょう?
編集2:edit1への回答はです いいえ, 、Dtocustomer2の名前空間は異なるためですが、同じ名前空間がある場合は機能する可能性があります。それでも、ここで最高のものが何であるかはわかりません。誰かが良い答えを思い付くことを期待しています。
前もって感謝します!
解決
私はここで別の質問の助けを借りてこの質問に答えることになりました: WCF-バージョン化を処理します
他のヒント
データ契約バージョンのベストプラクティスを説明するいくつかの便利なリンクを見つけてください。
2番目のリンクは、データ契約の属性や他のシナリオのほとんどを追加または削除するときの処理方法について説明しています。
それが役立つことを願っています。