這應該是很容易的人熟悉版本服務/數據合同的最佳實踐。我想確保我將以正確的方式使用此版本。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有不同的命名空間,但如果它具有相同的命名空間可能會奏效。儘管如此,我仍然不知道這裏最好的東西是什麼,期待有人提出一個很好的答案。
預先感謝您!
謝謝你的回答......我從您發佈的鏈接的文章已經看過,但我仍然不明白如何將它們應用於我的示例。 – Learner 2012-01-10 16:06:06