我有一個案例,我有一個Web服務客戶端作爲更大的產品的一部分。這裏的角色有點相反:客戶端是託管Web服務的客戶端,我們的應用程序就是那些使用它們的應用程序。是否可以使用.NET Web服務客戶端支持同一Web服務的多個不同版本?
客戶端目前全部運行這些Web服務的一個版本(最初也由我們構建)。藉助這一新產品,我們提供的Web服務堆棧將擴展爲新功能;客戶可以安裝這個新的堆棧,如果他們想訪問新的功能。
但是 - 一個關鍵要求是向後兼容性。 (可能很重要) - 我們在我們自己的服務器上安裝了一箇中央安裝的網頁軟件;我們所有的客戶都通過我們的服務器僅通過我們的服務器使用我們的系統;另一方面,客戶端的系統託管由他們單獨進行 - 他們都有自己的產品安裝,我們與這些產品集成(並將我們的Web服務作爲附加組件安裝到這些產品中)。因此,項目的這個新版本應該理想地檢測給定客戶端正在使用的Web服務堆棧的兩個版本中的哪一個(給定WSDL的URL和任何其他相關信息),並使用適當的Web服務客戶端進行通信。理想情況下,URL應該是相同的(即「www.exampleCompany22.com/MyCompanyWebService/」可以運行版本1,「www.exampleCompany88.com/MyCompanyWebService/」可以運行版本2)。我們應該能夠檢測到他們正在使用的版本,並使用適當的代碼對付它。
我們可以控制我們的系統,並且可以控制第2版(未來,第二版Web服務),但不是現有版本1(客戶端已經安裝並且可以選擇不升級選擇)。
是否有任何內置的功能(或任何庫,或任何其他直接的方式)在.NET中實現這個沒有任何解決方法?
我不認爲這應該是太難了,但這可能不是太 常見的情況...而絕對不是我遇到的。
我可以想出幾種方法來解決手邊的問題;但我想知道是否有一種實際的「正確」方式來做到這一點(或者如果某人之前有過類似的情況,並且可以就他們如何實施這些方面提供反饋)。
將此信息保存在數據庫中實際上不是一個壞主意......但是,它可能無法在我們的案例中實現。完整的背景是我們的客戶正在使用他們安裝和託管自己的Java企業應用程序;我們爲這個應用程序提供了附件(用Java編寫的Web服務),客戶可以安裝這些附件,以便我們的系統可以與他們進行通信;因此,它不需要公開(它只能與我們的系統通信)。這些版本的問題在於,我採取這一路線的全部理由是,我想讓客戶 – Ruslan
選擇不升級並保持其設置的方式。我們的系統應該在他們的最後調用我們的「插件」,檢測他們正在使用的版本,並與兩者一起工作......但我真的很感謝你的答案;這非常有用,讓我思考。 – Ruslan