澄清"网络服务"的概念

udi*_*dit 5 java axis soap wsdl web-services

我对作为实现可用的Web服务的不同定义和实现有点困惑.需要澄清一下.

我到目前为止使用过的:

  1. 如果供应商给我一个特定格式的XML,我可以发送填充数据来请求,我在互联网上做一个简单的HTTP POST传递XML字符串作为有效负载,这是一个Web服务调用吗?如果是这样,它是否有特定的名称,这种Web服务?因为很明显,它不使用像Axis,WSDL或SOAP这样的东西来建立这种连接.

  2. 这个的变体是如果供应商给我一个XSD,我使用JAXB从中创建一个java类并传入该对象的序列化版本,最终与选项1相同.

  3. RESTful Web服务:供应商为我提供了一个类似http:// restfulservice/products的URL,我可以对URL发出HTTP请求,并且根据我使用的HTTP动词,调用适当的操作并通过网络发送响应.

我只读过关于\有一个模糊的想法

  1. 肥皂.这是如何工作的?我已经阅读了W3Schools教程,并且我不确定有一种非常特殊的XML形式,它根据W3C标准进行标准化,我们使用这些标准传递与选项1中相同的消息.但是如何这在现实生活中有效吗?供应商发给我什么?我会生成课程吗?我是否将一些对象序列化并将http发布到一个地址?或者生成的对象本身是否有连接方法可以为我做这些?

  2. WSDL怎么样?供应商何时向我发送WSDL以及如何使用它?我想我可以从中生成类.如果是,那么我如何处理生成的类?

  3. 我什么时候需要轴jar来从供应商发送的东西生成类?

正如您所看到的,我对可用的各种Web服务有一些明确的和其他大多模糊的想法.如果有人应该澄清和/或指向更多的现实资源,将会有所帮助.我在互联网上看了一下Java Web Services,并且向我抛出的无数四个字母的首字母缩略词让我头晕目眩.

谢谢

ska*_*man 4

如果供应商为我提供了一种特定格式的 XML,我可以将其发送并填充要请求的数据,并且我通过 Internet 进行简单的 HTTP POST,将 XML 字符串作为有效负载传递,这是否是 Web 服务调用?如果是这样,这种网络服务有具体的名称吗?

是的,这仍然是一项网络服务。它没有“官方”名称,我通常将其称为 XML-over-HTTP,主要是因为我想不出更好的名称。

肥皂。这是如何工作的?...我读过 W3Schools 教程,并且了解到有一种非常具体的 XML 形式,它根据 W3C 标准进行标准化,我们用它来传递与选项 1 中相同类型的消息

SOAP 围绕您在 (1) 中发送的消息类型提供了一个标准包装层。该包装器提供信息,例如有关您正在调用哪个操作的指示。它还可以提供安全服务、交易信息等。通常,这是一个非常薄的层。

WSDL 怎么样?供应商何时向我发送 WSDL?我该如何处理它?我想我可以从中生成类。如果是,那么我该如何处理生成的类?

同样,WSDL 是一个非常薄的层,这次是围绕 XML 模式。它定义了 SOAP 消息在运行时将调用的操作,以及请求和响应的架构类型。它是一种形式化 XML 文档交换接口的方法。

举例来说,您有一个 XML 架构,并且有一个如您所描述的 Web 服务

  • 使用 JAXB 从模式生成 java 源
  • 通过 HTTP 将符合该架构的 XML 文档发送到 Web 服务

使用 WSDL 和 SOAP,您可以对此进行一些扩展:

  • 围绕 XML 模式编写一个瘦 WSDL 包装器,形式化哪些操作可用。
  • 使用 WSDL 导入工具为该 WSDL/Schema 生成客户端/服务器存根。在 Java 中,这通常包含 JAXB。
  • 使用 SOAP 客户端/服务器调用 Web 服务

正如您所看到的,这本质上是相同的过程。不同之处在于 SOAP/WSDL 为工具提供了附加信息和上下文,允许这些工具为您完成更多工作。不过,情况并没有太大不同。