随着时间的推移您的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扩展)?