Dot-Net

Webservice更改方法響應而不通知客戶端

  • March 22, 2016

假設我有一個 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 服務的預設行為,因此最好檢查一下。我不知道這種配置,但你永遠不知道。

引用自:https://stackoverflow.com/questions/35921370