是否有任何标准要求web服务通过将?wsdl附加到端点地址来提供WSDL?
如果WSDL托管在不同的URL (没有附加?wsdl),可以吗?
例如:
Endpoint: http://abc.xyz.com/MyService
WSDL: http://abc.xyz.com/MyServiceDefinition.pqr请注意,对于WSDL定义,我甚至使用了不同的扩展。
使用这种方法是否违反了任何标准,或者一个人可以以他们想要的方式托管东西?
发布于 2013-10-11 06:25:27
不,拥有wsdl访问并不是强制性的,而是推荐的方式。值得注意的是,大多数客户端将尝试将"? WSDL“添加到您的URL中,并尝试访问WSDL文件,因此强烈建议设置它。
发布于 2013-10-18 20:22:56
是否必须使用
?wsdl访问WSDL定义?
,不,不是,
WSDL用于描述web服务契约,因为它允许工具自动生成用于调用指定web服务的客户端存根代码。在与附加?wsdl的web服务相同的位置公开WSDL非常方便,而是每个人都使用的惯例。
人员和工具在该位置查找WSDL,框架在该位置自动公开WSDL,但这只是一种约定。据我所知,这在任何规范中都没有具体说明(或者至少没有我能找到的)。
有时候,尽管您不想提供每个人都可以查看并尝试创建客户机的WSDL,因为它是一个私有的web服务,而且您只想给您的合作伙伴提供访问权,而不是给每个人。此时,您可以不允许?wsdl URL,而只能通过使用替代通道向合作伙伴提供WSDL。如果你不想让它暴露在网上,你甚至可以发电子邮件。
所以你可以选择任何渠道来曝光它。请记住,是因为人们和工具遵循这个约定,他们习惯于在那里看到,例如,一些(写得不好的)工具可能会在不同的扩展中窒息。
P.S.我想提到的另一件事是 option in WCF 4.5,它与这个答案没有严格的关系,但在某种程度上加强了惯例。
与大多数其他工具一样,WCF在?wsdl地址公开WSDL,但是使用xsd:import语句和外部模式。有些框架无法处理带有导入依赖项的WSDL,因此人们开始在WCF上编写自定义以使平面WSDL公开,因此在最新版本的WCF中,Microsoft决定立即添加此功能。
但是为了向后兼容性,他们需要保持?wsdl端点的原样(返回包含xsd:import语句的WSDL文档),并被迫为平面WSDL:?singleWsdl添加一个新的查询参数。我相信这个想法也会被其他的web服务供应商和提供商采纳。
https://stackoverflow.com/questions/19311393
复制相似问题