隨着時間的推移您的Web服務可能會改變,你會怎麼做?如何應對變化? (不同的版本;添加更多的功能,修改甚至刪除功能等)如何使用Web服務管理更改?
2
A
回答
3
通常,對於非重大更改(主要是方法的添加),您可以在同一個終點擴展服務合同/實現。再說一次,當我說非破壞性變化時,它意味着語法和語義的變化。
否則,做乾淨的方法是舉辦不同的終點新的服務版本都在一起。在關閉舊版本之前,讓客戶有機會逐漸遷移到新版本(如果需要)。很多時候,您可以使用幕後的大部分服務實現並減少工作量。
此外,有時服務變化並不的方法但在輸入/輸出數據。這些可以通過版本化數據結構來解決。例如,接受XML輸入的函數可能會開始支持輸入中的附加數據/標記。在這種情況下,您可以將其託管在相同的端點上,然後根據數據確定客戶端正在發送的內容。雖然,我寧願在這種情況下有另一種方法或新的終點。
最後,你可以有也有你的服務接口方法可以發出版本信息或驗證由客戶提供的版本信息告訴它的服務實現是否與任何服務合約已內置兼容。這允許客戶在出現不兼容或配置不正確的情況下發送友好的消息。這種情況下的另一種變化可以是向客戶返回兼容服務版本的端點地址(兼容服務的動態發現的種類)。
1
我想補充一點,可以使用相同的代碼在後端,但只返回不同的輸出新的端點。
如果變化是足夠小(如只是一個新的屬性),那麼理想情況下,你可以只更新現有服務端點的輸出;將新的特性添加到輸出中並讓較老的客戶端忽略它。但問題在於,soap的使用者(特別是在.NET世界中)使用工具生成靜態代理,這些代理非常不靈活,無法更改。
相關問題
- 1. 如何更改受管理的Exchange Web服務中的AppointmentStatus
- 2. 如何使用Web服務託管WebApp
- 3. Web服務會話管理
- 4. Web服務會話管理
- 5. 在FlexBuilder中管理Web服務 - 管理員如何工作?
- 6. Azure服務管理api更改配置
- 7. 如何使用Mantl管理微服務?
- 8. 如何更改Web服務URL動態
- 9. 如何使用CVS管理更改集?
- 10. .NET Web服務 - 管理web請求
- 11. 如何更改Windows Azure服務管理員?
- 12. 如何更改服務器的管理員名稱和密碼
- 13. 如何使用http連接管理器SSIS動態更改服務器URL?
- 14. 如何使用ATL庫在運行時更改Web服務URL?
- 15. 如何使用報警管理器更新服務的Android
- 16. 如何用本地的web服務器管理git分支?
- 17. 如何使用WEB服務?
- 18. 如何使用Web服務?
- 19. 如何使用web服務
- 20. 如何更改WordPress管理
- 21. Azure管理API:如何更改Web應用程序定價層?
- 22. 當我使用3個Web服務器時,如何管理存儲在Web服務器上的緩存?
- 23. 如何更改計算機的IP? (使用代理服務器)
- 24. 如何使用TopShelf處理服務會話更改
- 25. VS2015 Web Addin項目 - 更改Web服務器物理路徑?
- 26. Windows服務和調度管理使用Web應用程序
- 27. 網站管理員的Web服務API
- 28. 的Web服務認證管理
- 29. RabbitMQ管理插件Web服務器
- 30. PowerShell Web服務(管理oData IIS擴展)?