首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于使用不同版本的webservices的设计模式?

用于使用不同版本的webservices的设计模式?
EN

Stack Overflow用户
提问于 2013-05-04 16:13:03
回答 2查看 1.8K关注 0票数 5

我正在寻找一种设计模式来解决我所拥有的架构问题。

我使用了一些not服务,这些服务有点相同,但并不完全相同。对于每个新版本的few服务,可能会有更多的方法可用,但在大多数情况下,它们基本上是相同的。

我想要编写一个抽象层,它可以工作,而不管我与哪个版本的with服务进行通信。显然,如果我使用的方法只存在于较新版本的webservices中,我将得到某种错误,但这是可以的。我能处理好的。

我之所以想要这个抽象层,是为了避免我的应用程序和它正在进行通信的with服务版本之间的紧密耦合。

当涉及到抽象层的设计模式时,我的选择是什么?我看到有一种模式叫做Adapter,另一种叫做Bridge。在这种情况下,有谁会这样做呢?任何帮助都是非常感谢的!

编辑--为了清晰起见,这里是一幅画。

有时我希望我的应用程序与webservices 1对话,而另一些时候我希望它使用webservices 2,这取决于谁在使用客户端应用程序。

客户端应用程序不应该完全知道或关心与其对话的版本。唯一的例外是,如果它使用的方法仅在某些版本中可用,我需要优雅地处理(告诉用户他们已经安装了一个旧版本的webservices)。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-05-04 16:39:45

那将是一家工厂。您甚至可以使用内置的ChannelFactory或自己的。无论如何,facttory允许您在不更改客户端合同的情况下更改实现。

票数 2
EN

Stack Overflow用户

发布于 2013-05-04 19:41:32

我建议使用正面图案。您可以通过下面的链接来了解更多关于它的信息。http://javapapers.com/design-patterns/facade-design-pattern/

Facade是为客户提供抽象和无缝层的交互。它隐藏了所有的内部复杂性,因为在您的情况下,客户端需要找到它可以交互的web服务的正确版本。假设您有不同版本的xml服务,并且输入json/xml结构在不同版本中发生了变化。Facade将接受客户端调用,它将根据不同版本的web服务验证输入,然后调用正确的web服务版本。如果您没有外观层,那么客户端将很难找到正确的webservice版本,并且在到达正确的web服务之前必须发送多个调用。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16376315

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档