Web services 是否必须使用?WSDL访问WSDL定义?

Web services 是否必须使用?WSDL访问WSDL定义?,web-services,wsdl,Web Services,Wsdl,是否有任何标准规定web服务应该通过向端点地址添加?WSDL来提供WSDL 如果WSDL托管在不同的URL上(不附加?WSDL),可以吗 例如: Endpoint: http://abc.xyz.com/MyService WSDL: http://abc.xyz.com/MyServiceDefinition.pqr 注意,我甚至对WSDL定义使用了不同的扩展 使用这种方法是否违反了任何标准,或者一个人可以按照他们想要的方式托管东西?不,它不是必须的?wsdl访问,而是推荐的方式。

是否有任何标准规定web服务应该通过向端点地址添加
?WSDL
来提供WSDL

如果WSDL托管在不同的URL上(不附加
?WSDL
),可以吗

例如:

Endpoint: http://abc.xyz.com/MyService
WSDL:     http://abc.xyz.com/MyServiceDefinition.pqr
注意,我甚至对WSDL定义使用了不同的扩展


使用这种方法是否违反了任何标准,或者一个人可以按照他们想要的方式托管东西?

不,它不是必须的?wsdl访问,而是推荐的方式。 值得注意的是,大多数客户端都会尝试将“?wsdl”附加到您的URL中,并尝试访问wsdl文件,因此强烈建议您设置它

是否必须使用
?WSDL
访问WSDL定义

不,不是。

WSDL用于描述web服务契约,之所以提供WSDL,是因为它允许工具自动生成用于调用指定web服务的客户端存根代码。在web服务的同一位置公开WSDL,并附加
?WSDL
,非常方便,这是每个人都使用的约定

人员和工具在该位置查找WSDL,框架在该位置自动公开WSDL,但这只是一种约定。据我所知,这在任何规范中都没有规定(或者至少我找不到)

有时,尽管您不希望提供每个人都可以查看并尝试创建客户机的WSDL,因为它是一个私有web服务,您只希望向您的合作伙伴而不是所有人提供访问权限。此时,您可以禁用
?wsdl
URL,并通过使用替代渠道仅向您的合作伙伴提供wsdl。如果你不想在网上曝光,你甚至可以通过电子邮件发送

因此,您可以选择任何频道来公开它。请记住,因为人们和工具都遵循这个惯例,他们习惯于在那里看到它,例如,一些(写得不好的)工具可能会在不同的扩展中阻塞

p.S.我想提到的另一件事——与这个答案没有严格的联系,但有点强化了传统——是

与大多数其他工具一样,WCF在
?WSDL
地址公开WSDL,但使用带有外部模式的xsd:import语句。一些框架无法处理带有导入依赖项的WSDL,因此人们开始在WCF上编写定制,以公开一个平面WSDL,以至于在最新版本的WCF中,Microsoft决定立即添加此功能


但是为了向后兼容,他们需要保持
?wsdl
端点的原样(返回一个包含xsd:import语句的wsdl文档),并被迫为平面wsdl添加一个新的查询参数:
?singleWsdl
。我相信其他web服务供应商和提供商也会接受这个想法。

我也有同样的观点,但找不到任何参考文档/链接,从标准的角度验证它。这需要与利益相关者分享。我很久以前就有一个参考链接,但不知怎的丢失了。你能给我指一些链接吗?我没有它的参考链接(找不到)。如果这是官方的事情,我们必须有一个链接。缺少链接可能表明它不是官方的。嗨,博格丹,谢谢你这么详细的回复,非常同意你所说的。