java - 澄清 "web service"的概念

标签 java web-services soap wsdl axis

我对作为实现可用的 Web 服务的不同定义和实现感到有点困惑。请需要一些说明。

目前我用过的:

  1. 如果供应商给我一种特定格式的 XML,我可以发送填充有数据的请求,然后我通过互联网进行简单的 HTTP POST,将 XML 字符串作为有效负载传递,这是否是 Web 服务调用?如果是这样,是否有特定的名称,这种网络服务?因为很明显,它没有使用 Axis、WSDL 或 SOAP 之类的东西来建立此连接。

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

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

那些我只读过\有一个模糊的想法

  1. SOAP 。这是如何工作的?..我读过 W3Schools 教程,我了解到有一种非常特殊的 XML 形式,它是根据 W3C 标准标准化的,我们用它来传递与选项 1 中相同类型的消息。但是如何这在现实生活中有用吗?卖家送我什么?我生成类吗?我是否序列化一些对象并将它们通过 http 发布到一个地址?或者生成的对象本身是否有连接方法可以为我完成它们?

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

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

正如您所看到的,对于可用的不同类型的 Web 服务,我有一些清晰的想法和其他大部分模糊的想法。如果有人能澄清和/或指出更多现实世界的资源,将会有所帮助。我在 Internet 上对 Java Web Services 进行了一些研究,大量的四个字母的首字母缩写词让我头晕目眩。

谢谢

最佳答案

If a vendor gives me a specific format of XML that I can send populated with data to request and I make a simple HTTP POST over the internet passing in the XML String as the payload, is this a web service call ? If so, is there a specific name to it, this kind of web service ?

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

SOAP. How does this work?.. Ive read the W3Schools tutorial and I undertsand that there is a very specific form of XML that is standardized according to W3C standards that we use to pass the same kind of messages as we did in option 1

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

What about WSDL? When does a vendor send me WSDL and what do I do with it ? I guess I can generate classes from it. If yes, then what do I do with the generated classes ?

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

例如,假设您有一个 XML 模式,并且有一个您描述的 Web 服务

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

使用 WSDL 和 SOAP,您可以稍微扩展一下:

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

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

关于java - 澄清 "web service"的概念,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2535042/

相关文章:

java - 如何使用 logback 关闭 STDOUT 形式的 Soap 消息 CXF

java - 在 ByteArrayInputStream 的 read 方法中抛出异常

java - 导航组件 : Switch Menu of Navigation Drawer (for logged in users)

xml - 请求和响应之间使用不同的 SOAP 命名空间/版本是否合法?

javascript - 在 Express 中监听 SOAP 请求

web-services - 如何从 Flutter/Dart Soap Web 服务 asmx 调用中获取值(value)?

java - 这个 group() 如何捕捉文本?

java - 如何重新排列数组以使空值占据数组的开头?

java - JSONException : Value <? java.lang.String 类型的 xml 无法转换为 JSONObject

c# - 有什么快速熟悉 C#、.NET 框架等的方法?