我已经阅读了几篇关于WSDL和SOAP的帖子,但我仍然混淆了这些术语的实际含义。现在,我知道您需要构建一个请求消息以便使用Web服务,它是发布还是获取消息。在谈论基于SOAP的Web服务时,您需要通过符合SOAP的构造XML文档与Web服务器进行通信。因此,您需要手动构建或使用适当的库。当这个东西进来时,WSDL怎么样?
Wikipedia声明“WSDL通常与SOAP和XML Schema结合使用,以通过Internet提供Web服务。连接到Web服务的客户端程序可以读取WSDL文件以确定服务器上可用的操作。” 。这意味着WSDL只是描述Web服务器上可用服务的文件,我想,这种通信也必须使用SOAP来完成。但是,如果我知道我使用的所有Web服务,我的意思是,如果它们是硬编码的,那么这意味着我根本不处理WSDL。 IMHO WSDL仅适用于非常智能的系统,在使用Web服务之前,程序需要读取状态并确定要读取的内容。我是对的吗?
答案 0 :(得分:4)
WSDL是一种描述Web服务具有哪些操作(方法)以及这些方法的输入/输出的方法。过去,在移动设备变得流行之前,WSDL被用作创建所谓的存根/代理类的手段。
这些类基本上由特定的Generator生成(例如WSDL2Java for Java或WSDL.exe for .NET),其作用是读取WSDL,获取方法及其输入/输出并生成特定于语言的类本地公开这些服务。实际上,它隐藏了来自用户的SOAP消息,并且从Web服务的角度来看消费者,他们正在处理他们选择的语言的本地类。
因此,使用SOAP的WebService被预示为异构系统之间的集成手段,允许与语言无关的通信。例如,服务实现的语言可以在C#中,但Web服务的使用者可以使用Java。如果使用者是Java程序员,通过使用WSDL自动生成类,Java程序员甚至不需要知道SOAP或XML的概念。所有程序员都知道他们正在处理Java对象。如今,SOAP比以往更加透明和众所周知。因此,通过选择,程序员可以直接编写SOAP消息代码,绕过通过WSDL生成代码的需要