是否建议在其他Web服务之上构建Web服务?

时间:2020-03-06 15:03:43  来源:igfitidea点击:

我继承了这个非常奇怪的代码库,他们在一系列内部Web服务上构建了一个外部Web服务,只是为了使用WS-Security,WS-Encryption等添加身份验证/授权。参与这项活动不到一个月,我已经感受到了通过刚性WSDL耦合易失性组件的痛苦,尤其是考虑到其中一些组件使用WCF而其他组件则选择首先使用WSDL。在各个级别管理生成的代理和包装器的各种版本是一场噩梦!

我承认设计过于复杂,本来可以更好,但是我的问题本质上是:

  • 我们是否会构建Web服务只是为了对一堆服务提供跨领域关注?
  • 作为Web服务处理程序,会更好地实现吗?

最后...

  • 我们可以将其归类为Web服务网关模式吗?

解决方案

如果我们要将服务公开给外界,并且需要加强安全性,那么我已经看到了类似的实现。请检查此MSDN专栏。

我看到了一年前正在建造的东西。当团队花了几个月的时间来构建4个Web服务时,我几乎哭了,其中2个使用WCF和一些严重的加密来包装其他内部服务。他们包装内部错误的唯一原因是更改了返回的潜在错误编号。

所以,我会故意这样做吗?没有。

像其他任何东西一样,它会更好地实现吗?是的。

我将其归类为WTF模式吗?绝对地。

更新:

我刚刚记得的一件事是,存在一种称为"企业服务总线"的体系结构,其目的是为其他SOA系统提供通用接口。这样,不同的应用程序将其端点机制(WCF,WSE 1/2/3,RESTful等)使用什么都没有关系。

BizTalk是ESB的一个示例,还有许多其他可以使用的现成程序。基本上,应用程序将一条消息传递给ESB,并以可靠的方式将该消息发送给其他系统,并整理所有响应。

这也意味着我们可以将其他应用程序与端点的多种更改隔离开来。当然,如果新的端点需要其他信息,则必须修改呼叫者。但是,如果它们正在改变的只是机制,那么好的ESB将能够处理这些改变而不会影响应用程序。