没有公共WSDL的Web服务是一种反模式吗?

时间:2017-11-30 08:36:06

标签: web-services soap wsdl corba

我最近和一位朋友争吵不休。 我们的公司在没有WSDL的情况下公开Web服务端点。 WSDL隐藏在系统内部。

一些同事说"它对安全性更好"。我说WHAAAAT? 另一个论点是"您不需要公开WSDL,因为它仅在开发时使用"。

所以基本上他们说当有人使用我们的Web服务时,总会有时间通过​​电子邮件传递WSDL,以便让他们构建客户端。一旦您处于prod状态,就不再使用WSDL了。

所以,请告诉我,我是对的。告诉我,当您向外界公开服务时,您必须公开与端点的合同。这是规则。谈论发展在这里无关紧要,对吗?

我的朋友说我有偏见是因为我写了一个动态网关,所以我需要在运行时使用WSDL,这种情况非常罕见。

在所有这些中真正令我生气的是 WSDL被认为是.DLL的.lib和.h或.SO ,它只是"只是在开发时需要的东西"。

我不知道CORBA和IDL是什么... IDL是否在运行时向公众公开?

那么,这里有什么是正确的?我输了。客户端是否打算在运行时接收WSDL?或不 ?它应该在运行时执行某种验证吗?

1 个答案:

答案 0 :(得分:1)

你错了。创建一个好的界面可能需要花费很多精力,多年的经验,而WSDL是对服务的非常详细的描述。如果那是秘密,那就这样吧。由于可能包含身份验证,因此也存在潜在的安全问题。

我想争辩说,如果你能获得原版,你绝不应该从服务中下载WSDL。在线WSDL有时由SOAP框架生成,并且通常不会包含文档。此外,应始终显式设置端点地址,永远不要使用可能包含在WSDL中的值。

事实上,正确的通信服务定义方式不仅是一套定义明确的WSDL / XSD,而且还包含错误响应的具体请求/响应示例。

依赖于下载WSDL来引导您的服务是一个灾难收据(如果这会阻止您的应用程序启动)。