2012-01-10 106 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 { ... } 
} 

...那麼我應該如何使用DTOCustomer2代替DTOCustomer1從se服務,以便新老客戶將遵守?在這種情況下推薦什麼?我的服務合同會改變嗎? AFAIK我不需要更改服務合同。服務合約將如何?我需要一個新的端點嗎?我是否需要使用新數據合同的新操作合同?

EDIT1: 只需改變

布爾AddCustomer(DTOCustomer1顧客);

布爾AddCustomer(DTOCustomer2顧客);

會做什麼?

EDIT2: 回答到EDIT1是沒有,因爲DTOCustomer2有不同的命名空間,但如果它具有相同的命名空間可能會奏效。儘管如此,我仍然不知道這裏最好的東西是什麼,期待有人提出一個很好的答案。

預先感謝您!

回答

-1

請找出描述數據契約版本的最佳實踐一些有用的鏈接。

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

第二連桿描述你如何處理時要添加或刪除您的數據合同,其他幾個場景的屬性。

希望有所幫助。

+0

謝謝你的回答......我從您發佈的鏈接的文章已經看過,但我仍然不明白如何將它們應用於我的示例。 – Learner 2012-01-10 16:06:06