我们知道,常见的方法调用都是同步调用,这种调用方式是一种阻塞式的调用方式,即客户端(主调用方)代码一直阻塞等待直到被服务端(被调用方)返回
为止。这种调用方式相对比较直观,也是大部分编程语言直接支持的一种调用方式。但是,如果我们面对是基于粗粒度的服务组件,面对的是一些需要比较长时间才
能有响应的应用场景,那么我们就需要一种非阻塞式调用方式,即异步调用方式。
SCA编程模式提供了三种方式的异步调用,它们分别是:
1. 单向调用方式。
2. 延迟响应方式。
3. 请求回调方式。
单向调用
单向调用方式是最为简单的异步调用方式,在这种调用方式中,客户端发出请求之后就不再关心服务端的情况,包括是否执行成功,返回值是什么等等。我们可以用下面的图 4示来描述这种单向调用方式:
图 4: 单向调用单向调用方式是一种不管调用结果的方式,但是在很多情况下我们是需要知道调用结果的。我们需要知道调用是否成功,需要知道调用的结果,就算调用失败我们也希望知道错误代码等信息。在这种情况下,延迟响应和请求回调就是两种能够让我们知道调用结果的方式。
延迟响应方式
延迟响应方式是指客户端在发出调用请求之后继续执行,但是经过一段时间之后,客户端再调用相应的方法去检索返回结果,并通过参数指定如何根据调用的
结果而执行进一步动作。由于是异步调用方式,因此,在第一次发出调用请求的时候,服务端需要返回一个称为票据(Ticket)的对象。这个对象会作为第二
次发出检索结果请求时的一个参数。显然,这个Ticket对象的作用与WEB编程的SessionID非常类似。我们可以用图 5
来表示延迟相应调用方式:
图 5:延迟响应调用方式请求回调
与延迟响应方式类似,请求回调方式也能得到服务端的响应,但是不同的是这个响应是由服务端通过回调方式来触发的,而不像延迟响应方式由客户端来主动
检索的。请求回调方式的原理与许多编程语言中的回调机制类似,不同的是这里实现的层次比较高一点。我们可以用图6来表示请求调用方式:
图 6:请求回调方式http://www.ibm.com/developerworks/cn/webservices/ws-sca/
分享到:
相关推荐
ComponentArchitecture,SCA)是下一代编程模型,此编程模型提供了三种异步调用模式。您可以使用那些模式异步地调用目标SCA服务,而不需要知道请求和响应消息是如何“魔法般地”进行处理的。本文阐述在发出异步请求...
本文内容包括:概览1.1SCA的起源1.2SCA中的基本概念1.3同步调用和异步调用1.4SCA客户端的两种调用方式1.5SCA的第一个例子――HelloWorld1.6结束语本文将介绍SCA编程模型中的基本概念,并以一个简单的例子来说明它的...
- **异步调用**:组件可以轻松地进行同步或异步调用。 - **清晰的解决方案组成描述**:服务的组合对于SOA而言至关重要。 - **提高生产力**:更容易集成组件形成复合应用。 SCA简化了所有开发者(包括J2EE开发者和...
- **组件交互模式**:SCA 定义了几种常见的组件交互模式,如同步调用、异步调用等。 ##### 3. SCA composite applications 本章深入探讨了如何创建 SCA 复合应用程序。复合应用程序是由多个服务组件组成的复杂系统...
SCA是实现SOA的一种编程模型,提供异步服务调用的能力,支持多种调用方式,如JMS和RMI。 **SCA的优势** 包括简化组件间的交互,促进服务的复用和组合,以及降低维护和更新成本。它使得开发者可以更关注业务逻辑,而...
- **服务调用API**:支持异步和同步的服务调用模式。 - **数据传输API**:定义了数据序列化和反序列化的标准方法。 #### 版权声明与许可证 文档明确指出了版权信息和许可条款,这表明SCA规范是由多个公司共同...
7. **组合(Composition)**:SCA允许通过声明式方式组合组件,定义组件间的依赖关系和服务调用顺序。 8. **数据流(Data Flows)**:描述组件间的数据传递,可以是同步或异步的。 9. **政策(Policies)**:定义...
- **组件调用**:在实现这些模式时,需要注意组件之间的调用顺序和通信方式。 #### 5. **使用Java语言实现SCA组件** - **Java编程**:由于Java的广泛性和成熟度,它是最常用的实现SCA组件的语言之一。 - **组件...
- **SCA(Service Component Architecture,服务组件架构)**:提供了一种标准化的方式来构建SOA中的服务组件。 - **SDO(Service Data Objects,服务数据对象)**:用于在不同的服务之间传递数据,支持数据的灵活...
3. SCA的描述:SCA是一种基于SOA的规范,它定义了语言中立的服务组合方式,允许跨语言服务调用。SCA强调服务组件与传输协议的解耦,提供可扩展的绑定,并主要是为了满足软件集成的需求。 4. 数据处理软件的体系结构...
项目主要基于Kotlin语言开发,Kotlin是一种现代的、面向对象的编程语言,它具有静态类型和简洁的语法,同时兼容Java虚拟机(JVM)和JavaScript,使得它在Android开发和后端服务中广泛应用。 在“demo-sca-provider-...
- **TCP/IP vs UDP/IP**:TCP/IP提供了一种可靠的通信方式,它确保了数据的完整性和顺序性,适用于那些对数据准确性要求较高的场景;而UDP/IP则是一种无连接的协议,虽然不保证数据的可靠传输,但是它的效率更高,...
1. **变量与数据类型**:JavaScript支持var、let和const三种声明变量的方式,以及基本数据类型(Number、String、Boolean、Null、Undefined、Symbol)和复杂数据类型(Object)。 2. **函数与作用域**:理解函数的...
- **异步编程**:Node.js利用事件循环和回调函数实现了非阻塞I/O,使得它能高效处理大量并发请求。 - **原型继承**:JavaScript的对象可以通过原型链实现继承,这是一种不同于传统类继承的面向对象方式。 - **闭包**...
6. **方法调用与消息机制**:方法调用通常是同步的,而消息机制具有异步特点。从可靠性角度,消息机制通常更优;效率上,消息机制可能更有效;消息机制也更灵活,支持多发送者和接收者。选项C不正确,因为一般情况下...
- Oracle SOA Suite 11g中的ESB组件支持多种消息传递模式,如同步调用、异步调用、消息队列等,从而满足不同场景下的需求。 4. **安全性与治理**: - 安全性方面,Oracle SOA Suite 11g提供了多种机制来保护服务...
服务可以通过本地调用或远程调用来执行,支持同步和异步执行模式。 4. **工作流(Workflows)**:OFBiz的工作流引擎提供了自动化业务流程的能力。它允许开发者定义和管理业务流程,如审批流程、订单处理等。 5. **...