异步操作和Web服务,第2部分:构建异步Web服务的编程模式

在本系列的第一篇文章中,我讨论了异步操作的性质以及它们如何应用于 Web 服务。在某些情况下,对 Web 服务请求的响应并不是立即提供的,而是在初始请求事务完成后的某个时候提供。Web 服务规范和标准并不显式支持这种 异步操作(asynchronous operation);但是,那些标准的确包含可以作为异步操作基础的基础架构和机制。通过本系列的第一部分,您应该已经知道了如何使用现有的基础架构来支持异步行为;如果您还没有看过那篇文章,我强烈建议您去看看,因为那里的信息将帮助您理解现在的这一部分。

在这篇文章中,我将讨论异步 Web 服务的几个设计模式。这些模式将帮助客户机和服务提供者应用程序的开发者将他们的代码设计为支持异步行为,同时考虑到代码的复杂性、给定传输的使用以及显式确认的需要。您或许还有兴趣看看另一个支持 Web 服务中异步行为的包。

Web 服务异步模式和基本传输类型

就象 Web 服务描述语言(Services Description Language,WSDL)规范版本 1.1 中定义的那样,这里讨论的支持异步 Web 服务操作的四个模式以端点可以支持的四种基本传输类型为基础:

单向(One-way):端点接收一条消息。

请求/响应(Request/response):端点接收一条消息并发送一条对应的消息。

征求/响应(Solicit/response):端点发送一条消息并接收一条对应的消息。

通知(Notification):端点发送一条消息。

IBM 的 Web 服务调用框架和异步操作

 

Web 服务调用框架(Web Service Invocation Framework,WSIF)向用来使用本地代理(例如,一个存根)异步调用 Web 服务的客户机 API 提供了根据调用上下文使用不同传输的能力。本文中讨论的许多模式都可以由 WSIF 组件支持,这样允许真正支持异步 Web 服务操作。

我们应该注意,本文中讨论的基本传输类型的数目与模式的数目之间是完全无关的。

每一个模式都要引入一个在客户机和服务提供者之间交换的 相关器(correlator),用于把响应与请求关联起来。相关器可以由参与交换的任一端提供,它的创建者可以根据底层传输来确定。例如,在使用 HTTPR 和 JMS 时,消息源提供相关器:一个事务标识或者 JMSMessageID 与 JMSCorrelationID 的一个组合。

对于单方向操作,如果您正使用 HTTP 或者 HTTPS,并且服务调用的接收需要由客户机确认,那么客户机的 HTTP 协议处理程序在等待 HTTP 响应(例如,一个 200 状态码)时应该阻塞调用以确保请求已被服务提供者的 HTTP 侦听器成功地接收。对于客户机使用服务代理的情况,任何与请求有关的错误状态都应该会导致异常被抛出。为服务代理的接口建模使其模型与服务提供者定义的 WSDL 操作相匹配很重要。例如,如果一个客户机调用一个单向操作,代理将永远不会向客户机返回一个参数(例如,一个状态码)。这种交换将有效地使操作成为一个请求/答复操作,并且答复信息不是来自服务提供者。

人们期望 W3C 的 WSDL 工作组能够通过提供在 WSDL 内正式定义回调机制(例如,回复地址)的能力扩展语言的异步操作支持。同时,上面列出的四种基本类型可以用于支持异步操作。但是,目前可用来使客户机端服务代理生成过程自动化的 IDE 和其它 Web 服务工具一般只支持请求/响应模型。

模式 1:单向和通知操作

在这个模式中,请求和响应是单独的 WSDL 操作内定义的两条消息。请求被建模为一个入站单向操作,响应被建模为一个出站通知操作。每条消息都被作为单独的传输层传送发送。

这个模式(参见 图 1)提供了客户机和服务提供者之间的高级分离,因为它支持使用两个数据报在双方之间进行交换,一个用于请求,一个用于响应。

图 1. 单向和通知操作

时间: 2016-07-22

异步操作和Web服务,第2部分:构建异步Web服务的编程模式的相关文章

Web站点的传输--《构建高性能Web站点》阅读1

1 数据是如何发送的 a 应用程序将要传输的数据放入内存中 b 应用程序使用send等库函数,通知内核将传输数据放入内核缓存区.数据是以队列的形式进入的,如果数据较多,则等前一波数据发送完后,再发送另外一拨数据,具体显示为send会多调用几次 c cpu通知网卡将内核缓冲区的数据存放到网卡缓冲区 d 网卡将数据从字节变为二进制数字信号 e 将二进制数字信号使用光纤或铜线传播   2 带宽是什么,受什么影响 带宽指的是数据的发送速度 100Mbps的网卡指网卡的最大传输速度是100Mbps 带宽受

异步操作和Web服务,第3部分:向Web服务添加业务语义

在这个系列的前面两部分,Holt Adams 解释了 Web 服务异步操作的相关性并讨论了一些构建异步服务的模式.现在,他要开始讲解三个新规范 ― Web 服务的业务流程执行语言(Business Process Execution Language for Web Services).Web 服务协调(Web Services Coordination)和 Web 服务事务(Web Services Transaction)― 并说明它们如何为 Web 服务开发者提供许多可能性.您将看到这三个

简单的异步 Web 方法

web|异步 何时采用异步 Web 方法 在确定是否适合在您的应用程序中采用异步 Web 方法时,有几个问题需要考虑.首先,调用的 BeginXXX 函数必须返回一个 IAsyncResult 接口.IAsyncResult 是从多个异步 I/O 操作返回的,这些操作包括访问数据流.进行 Microsoft Windows 套接字调用.执行文件 I/O.与其他硬件设备交互.调用异步方法,当然也包括调用其他 Web 服务.您可以从这些异步操作中得到 IAsyncResult,以便从 BeginXX

服务器端异步 Web 方法

web|服务器|异步 何时采用异步 Web 方法 在确定是否适合在您的应用程序中采用异步 Web 方法时,有几个问题需要考虑.首先,调用的 BeginXXX 函数必须返回一个 IAsyncResult 接口.IAsyncResult 是从多个异步 I/O 操作返回的,这些操作包括访问数据流.进行 Microsoft Windows 套接字调用.执行文件 I/O.与其他硬件设备交互.调用异步方法,当然也包括调用其他 Web 服务.您可以从这些异步操作中得到 IAsyncResult,以便从 Beg

ASP.NET服务器端异步Web方法

asp.net|web|服务器|异步 摘要:Matt Powell 介绍了如何在服务器端使用异步 Web 方法,来创建高性能的 Microsoft ASP.NET Web 服务. 简介 在九月份的第三篇专栏(英文)中,我谈到了利用 Microsoft¡ .NET Framework 的客户端功能通过 HTTP 异步调用 Web 服务的问题.这种调用 Web 服务的方法非常有用,使用时不必锁定您的应用程序或产生过多后台线程.现在我们了解一下在服务器端提供类似功能的异步 Web 方法.异步 Web

Matt Powell的《Server-Side 异步Web Methhods》

server|web|异步|异步 摘要:Matt Powell 介绍了如何在服务器端使用异步 Web 方法,来创建高性能的 Microsoft ASP.NET Web 服务. 简介 在九月份的第三篇专栏(英文)中,我谈到了利用 Microsoft? .NET Framework 的客户端功能通过 HTTP 异步调用 Web 服务的问题.这种调用 Web 服务的方法非常有用,使用时不必锁定您的应用程序或产生过多后台线程.现在我们了解一下在服务器端提供类似功能的异步 Web 方法.异步 Web 方法

异步操作和Web服务,第1部分:异步事务入门

并不是所有的 Web 服务都同步工作:某些情况下,对 Web 服务请求的响应并不是立即提供的,而是在最初的请求事务完成后的某个时候提供.Web 服务规范和标准并不显式支持这种 异步操作:但是,那些标准的确包含可以作为异步操作基础的基础架构和机制.在本文中,Holt Adams 说明了为什么任何 Web 服务设计师都需要理解异步操作是如何运行的.本文将帮助您开始使自己的服务适应异步环境. Web 服务调用本质上是异步的,因为服务提供者必须能够接收来自客户机的请求而无需通知.但是,有时 Web 服务

使用Apache搭建web服务(三) 构建web虚拟主机

虚拟web主机指的是在同一台服务器中运行多个web站点,其中的每一个站点实际并不独立占用整个服务器,因此被称为"虚拟的web主机".在搭建虚拟web主机时,可以使用三种方法搭建虚拟web服务,基于IP地址.基于端口号和基于域名的.常用的是基于域名构建虚拟web主机.那么我们就来了解一下怎样搭建这三种不同的虚拟web主机. 基于IP地址的虚拟主机:为每个虚拟主机使用不同的域名,不同的IP来实现. 基于端口的虚拟主机:这中方式不使用域名.IP地址来区分,而是使用不同的端口号来实现. 基于域

使用Jersey和Apache Tomcat构建RESTful Web服务

RESTful Web 服务简介 REST 在 2000 年由 Roy Fielding 在博士论 文中提出,他是 HTTP 规范 1.0 和 1.1 版的首席作者之一. REST 中最 重要的概念是资源(resources),使用全球 ID(通常使用 URI)标识.客户端 应用程序使用 HTTP 方法(GET/ POST/ PUT/ DELETE)操作资源或资源集. RESTful Web 服务是使用 HTTP 和 REST 原理实现的 Web 服务.通常,RESTful Web 服务应该定义