我已經構建了一個簡單的客戶端 - 服務器應用程序。當我對服務器進行更改時,我將刪除服務引用並重新創建它以反映我對服務器應用程序所做的更改。每次進行更改時是否需要更新服務參考?
我必須在每個時間我進行了更改服務器應用程序創建它,或有任何方式的服務引用自動更新?
謝謝
我已經構建了一個簡單的客戶端 - 服務器應用程序。當我對服務器進行更改時,我將刪除服務引用並重新創建它以反映我對服務器應用程序所做的更改。每次進行更改時是否需要更新服務參考?
我必須在每個時間我進行了更改服務器應用程序創建它,或有任何方式的服務引用自動更新?
謝謝
基本的答案可能是:是的。
WCF和分佈式應用程序的好處是,客戶端和服務器可以獨立發展。更新客戶端以利用更新版本的服務應該是有意識的選擇。
當然,在開發過程中,這可能是一種痛苦。有幾種方法可以緩解這個問題,這裏有一些我能想到的:
肯定有更多(甚至更好)的方法,但這些方法可能已經幫助你了。
這取決於
如果你正在做的是在不改變現有功能的添加功能,客戶端不需要新的功能,那麼答案是否定的
這是觀念落後'IsRequired'DataMember屬性。如果您向數據協定添加新的實體,但將其標記爲IsRequired = false,則現有系統仍可使用舊合同與服務器進行交互。
顯然,添加新的方法不會打破舊合同或者,客戶不會知道新方法。
目前我在我的項目中遇到了同樣類型的問題。
當我添加一些方法或更改數據成員的財產在服務那麼我必須要,否則更新服務引用我的客戶端無法使用更新的東西。
基本上,如果你在服務中添加任何方法,並且你沒有更新服務引用,那麼它的罰款你的代碼不會崩潰,它會像以前一樣工作,但如果你改變一個屬性(數據成員),你是必然需要更新服務引用,否則你的代碼將會中斷。
另一種方法我把我的僱主是要使用的接口,並通過'的ChannelFactory'創建客戶端 - 主要是因爲我不喜歡服務引用的所有額外的混亂。從長遠來看,它還從可擴展性的角度提供了其他好處。 –
Tim
好點。這正是我需要知道的。謝謝! –