Dot-Net
Webservice更改方法響應而不通知客戶端
假設我有一個 web 服務,它在所有方法上返回一個類,通知客戶端程序的狀態,例如:
public class WsResult { string result; // either "error" or "ok" }現在我們想為這個類添加一個屬性,而不是強迫所有使用我們服務的客戶更新他們的軟體。這可能嗎?
例如:
public class WsResult { public string result; // either "error" or "ok" public Guid? someIdentifier; }我正在尋找關於 WCF 和 ASMX 的答案。
WCF
有可能的。您可以簡單地添加一個新屬性,只要不需要這個新屬性,它就可以工作。有關更多詳細資訊,請參閱最佳實踐的第 8 點:數據契約版本控製文章。
如果您需要處理往返場景,您應該閱讀有關
IExtensibleDataObject介面的資訊。當數據從伺服器發送到客戶端並且預計會被發回時,就會發生往返。有關詳細資訊,請參閱前向兼容數據協定文章。ASMX
對於 ASMX,情況是一樣的。您可以添加一個新屬性,所有客戶端都應該工作。在這種情況下,您也可以使用
IExtensibleDataObject介面。最後的評論
此答案基於 VS 2015 的經驗測試。我強烈建議您也這樣做:編寫簡單的 WCF/ASMX 伺服器和客戶端並驗證我描述的行為。我只花了幾分鐘就完成了。或者更好的是,您可以使用已經存在的服務。
我建議進行額外測試,因為您可能正在使用一些非預設配置,這些配置會更改 WCF/ASMX 服務的預設行為,因此最好檢查一下。我不知道這種配置,但你永遠不知道。