您正在编写一个使用天气Web服务http://example.org/weather/weather.asmx
的程序。它可以工作,但是两个月后http://example.org/weather/weather.asmx
上将不再提供天气Web服务。
相反,它在
http://example.com/poschaci/temp.asmx
。一个月后,URL再次在http://example.net/w.asmx处更改。一项研究表明,天气Web服务将永远不会在一个地方提供。其网址将继续更改。
任务1)
哪种架构为您提供了一种编写程序的可能性,使其可以在现在和将来使用,而无需重新编程或更改参数或配置文件,即使在这种情况下 情况
任务2)
概述此架构的功能!简要描述该体系结构的组件的任务!
我阅读了有关SOAP,REST和WSDL等的信息,发现我们需要使用REST体系结构来构建它。希望获得专家意见。
没有代码,因为这是一个理论问题。
不适用
答案 0 :(得分:0)
您可能会将Web服务视为接口或API。您是此接口API的客户端。如果界面发生变化,您作为客户端需要适应您的呼叫。没有解决此问题的好方法。通常,提供API的人需要保持其稳定,并为您提供移植到较新版本等的方式。但是我想您不能向有问题的天气服务部门提出要求。 现在,要处理频繁的界面更改,您可以执行以下操作: -创建自己的接口,该接口定义要返回的数据,这是一个抽象层。 -根据界面对客户端进行编码,您可以控制更改 -通过查询天气服务1或天气服务2来实现接口的实现。这只是数据映射。天气服务1和2可能完全不同,或者您可以考虑具有不同版本的同一服务。您的客户端代码都不需要更改,只有在URL更改时此映射才会更改。
此解决方案可帮助您在上述实现之间轻松进行更改。我所描述的是针对您的问题的OOP解决方案,因此您将需要使用OOP语言来实现多态行为。
关于最后一点,您可能选择将服务(我在上面所说的接口)公开为REST服务。
答案 1 :(得分:0)
任务1) 架构不是问题,更多的是服务设计问题。根据服务设计和8服务desing principles的原则,此方案几乎违反了许多已定义的实践。 服务本身应是可互操作的,并应具有服务发现性。服务公开的方式应考虑URL更改的情况。
从技术上讲,这可以通过使用DNS,反向代理或简单地添加可以执行服务调用的定义的静态URL进行寻址,然后重定向到SOAP术语中的所需服务操作或REST术语中的API资源。
它应该是静态的,例如http://example.org/weather.asmx
,而weather.asmx
将包含可以动态调用和更改的其他操作,但是h ttp://example.org/weather.asmx
应该是永久的。
任务2) 如果必须通过使用REST实现此目的,则必须了解HTTP代码和无状态工作流的基本功能。通过一些免费的在线培训来发展您的技能,例如,来自udemy.com的关于API设计的培训。
我建议遵循有关“ develop and exose an API with JAVA tutorial”的教程,博客和视频教程。