我們已經通過一定的DataContract和SerivceContract向生產交付了WCF服務。 但是現在我們需要稍微改變一下SerivceContract和DataContract。我們的一位消費者無法更新合同。但我們需要在同一地址上支持舊客戶端和新客戶端。怎麼做?WCF中DataContract/ServiceContract的構造
舊合約:
[ServiceContract]
public interface ICoolerService
{
[OperationContract]
IEnumerable<Cooler> Get(IEnumerable<int> ids)
}
新合同:
[ServiceContract]
public interface ICoolerService
{
[OperationContract]
IEnumerable<Cooler> Get(IEnumerable<CoolerRequest> req)
}
[DataContract]
public class CoolerRequest
{
[DataMember]
public int Id { get; set; }
//and some more properties
}
請指教如何支持在相同的URI兩份合同。
其中一個方法是使方法,該方法返回的版本合同。如果比在客戶端保存的更新,則自動將新引用的更新下載到客戶端。我們使用這個和它的工作完美。每個客戶都有實際的版本。 – Musketyr
不幸的是,我們還沒有訪問客戶端代碼:( –
因此,這是不可能的。如果您在服務器端更改合同並且想要在客戶端使用更改,則必須更新客戶端上的引用。 – Musketyr