mar*_*c_s 50
你不能 - 一个XSD描述数据方面,例如web服务 - WSDL描述了Web服务的功能(方法调用).您通常无法单独从数据中找出方法调用.
这些实际上是两个独立的,独特的部分.为简单起见,您通常会将XSD定义导入到<wsdl:types>标记中的WSDL中.
(感谢Cheeso指出我对术语的不正确使用)
Che*_*eso 27
我想与marc_s在这方面有所不同,谁写道:
XSD描述了例如Web服务的DATA方面--WSDL描述了Web服务的FUNCTIONS(方法调用).您通常无法单独从数据中找出方法调用.
WSDL没有描述函数.WSDL定义了一个网络接口,它本身由获取消息的端点组成,然后有时会回复消息.WSDL描述了端点,请求和回复消息.它非常注重消息.
我们经常将WSDL视为一组函数,但这是因为Web服务工具通常会生成客户端代理,这些代理将WSDL操作公开为方法或函数调用.但WSDL并不要求这样做.这是工具的副作用.
编辑:此外,在一般情况下,XSD不定义Web服务的数据方面.XSD定义了兼容的XML文档中可能存在的元素.这样的文档可以作为Web服务端点上的消息进行交换,但不一定如此.
回到问题我会回答原来的问题.我说是的,可以 生成给定xsd文件的WSDL文件, 就像使用egg生成煎蛋一样.
编辑:我原来的反应不清楚.让我再尝试一次.我不建议XSD等同于WSDL,也不建议XSD足以生成WSDL.我确实说在给定XSD文件的情况下可以生成WSDL,如果用这个短语表示"使用XSD文件生成WSDL".这样做,您将扩充XSD文件中的信息以生成WSDL.您将需要定义其他内容 - 消息部分,操作,端口类型 - XSD中不存在这些内容.但是,通过一些创造性的努力,可以"在给定XSD的情况下生成WSDL".
如果短语"生成给定XSD的WSDL"意味着"将XSD机械转换为WSDL",则答案为否,您不能这样做.鉴于我对上面的WSDL的描述,这一点应该很清楚.
使用XSD文件生成WSDL时,通常会执行以下操作(请注意此过程中的创意步骤):
大多数WSDL或多或少是样板文件.它看起来令人生畏,但这主要是因为那些可怕且丰富的尖括号,我发现了.
有些人认为这是一个冗长的手工流程.也许.但这就是您如何构建可互操作的服务.您还可以使用工具来定义WSDL.从代码动态生成WSDL将导致互操作陷阱.
我知道这个问题很老,但值得回答.我个人更喜欢手工创建WSDL并使用SoapUI测试合规性.但有时(特别是对于复杂的WSDL),您有三种方法可以生成一个XSD:
我更喜欢CXF方法,因为我是一个CLI人员.如果它有CLI,你可以自动化(这是我的座右铭).我最喜欢Spring WS方法,因为它使用了很多特定于框架的约定.
有更多人了解CXF(我相信)而不是Spring WS.因此,任何可以为新工程师提供学习曲线的东西(没有任何明显的优势或投资回报率)都是我所不喜欢的.
它也应该没有说任何生成的WSDL应该进行有效性和合规性测试(并调整直到它符合),并且你的应用程序发布一个静态wsdl(而不是返回一个自动生成的.)
根据我的经验,您从符合WS-I的wsdl开始,然后您的应用程序自动生成(并返回给消费者)不合规的wsdl.
换句话说,要小心汽车魔术.