我正在使用 JAX-WS 对基于 SOAP 的 Web 服务进行一些研究,我发现理解与客户端相关的部分非常复杂。 如果有人可以帮我解释一些主题,我将不胜感激。我正在使用 SOA 书籍和谷歌,但我真的很困惑,所以这就是为什么我认为在这里我可以获得更准确的答案,专注于我需要的东西。
因此我们可以通过同步和异步方式与网络服务进行通信。同步通信的不足是双方必须相互等待,直到处理结束。
异步客户端允许我们使用 2 种编程模型以异步方式进行通信:1- 回调和 2- 轮询
- 疑问 1:有人可以用简单的方式向我解释这两种模型(回调和池化)的区别、优缺点
在谈论异步通信时,我还了解到生产者(Web 服务)应该有一种方法,在处理完成后找到消费者(客户端)。这就是我们进行寻址的原因。
- 疑问 2:您能否简要解释一下寻址的工作原理?还有寻址与回调和轮询技术有何关系?
还有一件事。 Dispatch API 也让我很困惑。因为他们一直在谈论动态客户。
- 疑问 3:如果他们一直在谈论动态客户端,Dispatch API 与异步通信有什么关系?
- 疑点4:Dispatch API的2种使用方式(MESSAGE和PAYLOAD),是做什么用的,与JAXWS的异步通信模型有什么关系?
最佳答案
- 谁能用简单的方式向我解释这两种模型(回调和池化)的区别、优缺点
回调:实现并不直接。
- 优点:这种方法比轮询方法更优雅/系统。
- 缺点:客户端应该有一种机制,以便服务器可以使用回调对其进行回调。
轮询:实现很简单。
- 优点:由于它的技术简单,它是通用的,即使是启用了ajax的网页也可以使用这种技术来检查请求的更新是否可用。
- 缺点:带宽的巨大浪费,还有服务器客户端的时序问题,比如如果客户端的轮询请求还没有到来,服务器应该保留响应多长时间。
2.您能简单解释一下寻址是如何工作的吗?以及寻址与回调和轮询技术有何关系?
寻址使 web 服务可以理解以前仅在消息传递系统和传输提供商之间共享的信息。考虑这个用例,最初使用的传输将是 HTTP,用于发送请求和响应。然后您可能想要更改此传输的一部分,比如在发送回响应时,仅使用 SMTP 协议(protocol)。如果您使用 ws 寻址,与传输和寻址相关的全部信息将成为 soap 信封本身的一部分,这将使您的 web 服务能够动态更改传输以响应发送。
Web 服务寻址也可用于回调,从服务器到客户端。该服务在 WSDL 中将其所需的回调通知端口类型。客户端实现此端口类型,然后使用 WS 寻址通知服务回调端点。
简而言之,WS 寻址向 soap 信封添加了额外的标签,其中包括仅出现在传输 header 中的信息,如从地址、到地址、操作名称等。
3. 如果 Dispatch API 一直在谈论动态客户端,那么它们与异步通信有何关系?
Future<?> response = dispatch.invokeAsync(T, AsyncHandler);
invokeAsync 方法是一种轮询方法。响应立即返回给用户,并可能被轮询完成。同时,客户端程序可以做其他工作。javax.xml.ws.Response 实现了J2SE 5.0 中包含的java.util.concurrent.Future 接口(interface)。 Response 对象通过其 get 方法返回实际响应,如果响应尚未准备好返回,该方法将阻塞。
4.Dispatch API的两种使用方式(MESSAGE和PAYLOAD),分别是做什么用的,与JAXWS的异步通信模型有什么关系?
消息传递模式与异步通信没有直接关系。消息传递模式定义了 Web 服务请求中发送的信息量。
MESSAGE MODE 只能在使用 SOAP 绑定(bind)时使用。
关于java - 用于调用 Web 服务的 JAX-WS 异步客户端技术,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9962654/