澄清“网络服务”的概念

时间:2010-03-28 23:37:27

标签: java web-services soap wsdl axis

我对作为实现可用的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动词,调用适当的操作并通过丝。

  4. 我只读过关于<有一个模糊的想法

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

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

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

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

      由于

2 个答案:

答案 0 :(得分:4)

  

如果供应商给我一个特定的格式   我可以发送的XML格式   请求的数据和我做一个简单的   通过互联网传入的HTTP POST   XML String作为有效载荷,就是这样   网络服务电话?如果是的话,有没有   它的具体名称,这种网络   服务?

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

  

SOAP。这是怎么回事?我读过了   W3Schools教程和我   undertsand有一个非常   XML的特定形式   根据W3C标准化   我们用来传递相同的标准   我们在选项1中所做的那样的消息

SOAP围绕您发送的消息类型提供了一个标准的包装层(1)。此包装器提供了一些信息,例如您要调用的操作的指示。它还可以提供安全服务,交易信息等。这通常很薄。

  

WSDL怎么样?什么时候供应商   发给我WSDL,我该怎么办呢   ?我想我可以从中生成类   它。如果是,那我该怎么办呢   生成的类?

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

比如说,你有一个XML Schema,并且有一个你所描述的Web服务

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

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

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

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

答案 1 :(得分:0)

如果从某个地方获得WSDL文档,您真正需要知道的是它定义了一个服务接口。您可以通过您喜欢的语言的绑定生成器运行它,以生成一些可用于调用服务的代码。通常,这意味着您将使用HTTP上的SOAP消息通过线路与服务进行通信。 SOAP只是一个发送非常随意的XML消息的包装器。

Axis是一个用Java(客户端和服务器端)完成这些工作的库。我怀疑其他库中有更好的实现。

相关问题