写点什么

Jim Marino 与 Meeraj Kunnumpurath 专访:关于 SCA 和 Fabric3

  • 2008-05-05
  • 本文字数:4398 字

    阅读完需:约 14 分钟

BEA 发布了在 WebLogic 10.3 中支持的 SCA 技术预览版,它是以开源的 Fabric3 运行时为基础构建的。InfoQ 采访了 BEA Systems 的技术主管 Jim Marino,以及 VocaLink 的首席技术人员 Meeraj Kunnumpurath ,后者是 SCA 最早的参与者和 Fabric3 贡献者之一,并参与了 SCA 规范制定和 Fabric3 实现。

InfoQ:过去 10 年 SOA 有了长足的发展,你们如何看待软件工业向 SOA 方向的演变?

Meeraj:从最终用户角度来看,我们关心的是如何解决不断增长的复杂业务问题。 Vocalink 是世界上最大的银行同业支付服务提供商(interbank payment processors)之一。40 年来我们一直从事这个业务。今天,我们看到了许多商业机会,其中大部分在欧洲。这些新机会要求我们重用软件资产构建新的解决方案。我们认为 SOA 是使这些新的商业机会成功的关键。对我们来说,SOA 能使我们改进整体拥有成本和开发新的解决方案。

Jim:Meeraj 的观点有一定的代表性,我们发现用户在重用代码方面确实存在着困难。面向对象技术的引入显著地改善了应用内部的代码重用。然而,跨过程边界的代码重用有更多的问题。诸如 EJB 或 CORBA 这样的远程技术错误之处在于,试图将 OO 原则应用到进程间通信上。对于 SCA,我们为这一问题采用了完全不同的解决方法。SCA 为进程间调用引入了一个拥抱 OO 的编程模型,同时为远程操作所需要的异步、松耦合交互提供了便利。随着很多现有编程模型变得复杂,对于 SCA,我们力求编程模型在降低复杂性的同时通过组合(composition)来提供模块性。其中的组合是一个关键概念……

InfoQ:今天如何采用 SCA 呢?

Meeraj:我们期望看到更多来自厂商推广 SCA 的努力。在过去的 3~4 年间,SOA 已经演变成了一个构建解决方案的主要范式。但是在极大程度上,SOA 依旧是一组模式和最佳实践,有时难以实现。同时我们看到开发人员对基于容器的技术感到痛苦,并转而求助于象 Spring 或 Mule 这样的更轻量级编程模型。但是,这些技术依旧是私有的,它们会把你锁定到特定的技术和厂商。SCA 带来了一个新的轻量级编程模型,但是这次,它是基于标准的,锁定问题不再出现。在构建基于 SOA 的企业应用方面,SCA 提供了一组约定俗成的规范。

直到现在,我们的 SOA 实现还是基于 Spring 和 Mule 的。我们现在正向 WLS 10.5 迁移,而且利用了 SCA。在模块化、组合、策略增强和高度重用方面,它满足了我们的需要。对我们来说,这是一个极大的进步,这是需要被传播的技术,我们也愿意看到更多的来自厂商的努力。

Jim:我同意 Meeraj 所说的,在解释 SCA 是什么这件事上,我们做得不是非常好。即使它开始得到更多动力,但与早期围绕 EJB 所作的宣传相比,这个动力还很少。原因之一是我们现在还没有任何成熟的运行时。随着两个开源项目 Fabric3 和 Apache Tuscany 走向成熟,我们会看到更多人对这项技术发生兴趣。我也承认当今的技术环境不同了。新技术的普及速度更慢。总的来说,如果我们能小心地推进 SCA 的发展并避免匆忙地将技术投放到市场会是件好事。

Meeraj:我得说,只要新技术能解决问题,它们就会获益颇丰。例如,我们已经看到象 Spring 这样的技术正显现出一个巨大的市场。

InfoQ:说到新技术,OSGi 似乎也正成为一项重要技术,你如何定位 SCA 和 OSGi?

Jim:OSGi 是一项伟大的技术,而且 BEA 是它的一个强大的支持者。OSGi 和 SCA 可以是互补的。例如,一个 SCA 运行时可以运行在一个像 Equinox 或 Apache Felix 这样的 OSGi 容器中。但是,认识到 OSGi 并没有解决全部的模块化需求也很重要。为了给应用模块化提供更好的支持,SCA 提供了组合(composite)和部署单元(contribution)。我想稍稍多谈一些部署单元,因为它们是我们最近对 SCA 规范所作的一个主要变化。在 SCA 中,部署单元用来安装和共享应用部件。SCA 规定的互操作打包格式是 zip,如 Java 运行时中的 JAR。我们曾考虑过使用 OSGi bundle 的可能,但是我们没能那么做:OSGi 实际只考虑了单进程,单 JVM。SCA 需要处理分布式情况。此外,SCA 不限于 Java,需要处理非 Java 部件(如 WSDL 文档和 XML 模式)的共享。因此,我们认为我们需要开发部署单元这个概念,它负责分布式环境中的打包和共享。

SCA 部署单元机制的一个有趣方面就是它是可扩展的。这使得 SCA 运行时能支持 OSGi bundle 作为一个部署单元的打包格式。与之类似,一个 SCA 运行时也能支持诸如 WAR 或 EAR 这样的其他打包格式。

Meeraj:我们检查了 OSGi 和 Spring 动态模块。我们发现 OSGi 和 SCA 之间存在很多重叠。例如,SCA 提升(Promotion,译注:将组合内部的组件提升为外部可用的服务暴露出来)在 OSGi 中有等同的概念,SCA 部署单元也是如此。但是,据我所知,在 OSGi 中并没有等同传输层抽象和策略的概念,即使在企业 OSGi 中有一些关联的项目,但情况依旧。这些特性对于构建企业中间件来说有巨大价值。我们的经验是,SCA 真的使我们构建 SOA 应用的必由之路具体化了:实现 SOA 行话和模式变得简单,强调类型化的服务契约。同时,SCA 能使我们在将来自由地将我们的代码移动到不同 SCA 容器。

InfoQ:你们采用 SCA 的方法是什么?

Meeraj:我们正处于将应用从大型主机移动到中型服务器的过程中,使用 Java 环境。我们经历了两个不同阶段:首先使用重型技术如 EJB,然后转向更轻型的技术如 Spring 和 Mule。现在,就模块组合、策略增强、传输层抽象和异构联邦来说,我们正经历更复杂的问题。Spring 对我们帮助很大,但是 SCA 解决了比 Spring 或 Mule 更多、更复杂的企业软件工程问题。

在我们转向 SCA 时候,我刚刚参与 Tuscany。后来,在我开始从事 Fabric3 工作的时候,我担任了指导性更强的角色。这使得我们能更进一步了解这个技术。我们考虑在 2 个项目中使用 SCA。这是一个有见地的决策,因为我们参与了 OASIS 技术委员会和 Fabric3 项目。当然,我们还没有任何系统在生产,但是我们计划在今年第 4 季度发布这两个系统,这两个系统都在一个 J2EE 容器中使用了 Fabric3。

这些项目混杂着遗留代码和新写代码。绝大部分现有代码构建在象 Spring 这样的技术上。就迁移这些 Spring Bean 到 SCA 环境而言,基本上就是把它们找出来,然后给它们添加 SCA 注解。Fabric 3 也支持许多能将遗留代码作为 SCA 组件运行的启发式方法。那很简单。

Spring 允许我们完成依赖管理,这样我们就能在容器外运行我们的代码,然后改变配载在 J2EE 中运行。在 VocaLink,Spring 为使用更轻量级的编程模型奠定了基础。但是,我们发现 SCA 更好地解决了面向组件软件开发的复杂性。我们有一个关键需求必须用组件封装。我没有办法在把一系列 Spring bean 组装成一个组件的同时,将某些 bean 标识成是这个组件私有的。SCA 非常擅长管理这种区别,只提升组合(composite)中想给外部使用的那些 Bean,而将其他任何东西都留给组合私有。此外,SCA 策略对于强制 QoS 方面具有更多的表现力。SCA 意图(intent)抽象了那些能映射到运行环境中具体策略的需求。对我们来说,我们认为 SCA 以一种标准方式解决了很多过去用 Spring 解决的问题。而且,象 F3 这样的实现完全在无损轻量级开发模型和开发人员生产效率情况下做到了这一点。

Jim:许多的 BEA 产品正转向 SCA。我们正在 WebLogic 中支持通用的 SCA 能力。WebLogic Server 将 Fabric3 内嵌为第一级容器,与服务器包含的 JEE 支持的方式相同。这允许用户在 WebLogic Server 上安装 Fabric3 扩展,如绑定、策略,并支持不同的组件实现类型。它还允许用户创建自定义的扩展,它可被安装到任何内嵌了 Fabric3 的地方,无论是 WebLogic,还是其他服务器,如 Tomcat、Jetty 或一个基于 OSGi 的运行时。WebLogic Server 增加了诸如集群、管理、故障转移和可靠性方面的特性。我们还正在为开发人员和部署人员开发相关的 SCA 工具。

InfoQ:就松耦合和 SCA,你们能提供些看法吗?

Jim:SCA 的编程模型特意为促进松耦合而设计。在 Java 中,SCA 使异步交互、回调和会话成为了一等公民。如 Meeraj 之前所说,SCA 还提供了协议抽象,这样在远程调用时代码就无需处理低级的传输层 API。这就是某种形式的松耦合,它尽可能地移除了与传输协议有关的依赖。

但是,有趣的是,SCA 也支持更耦合的方式,本地交互。这是因为松耦合并不适于应用设计的所有层级。例如,处理远程异步交互一般就比处理同步本地交互复杂。通过它的组合概念,SCA 支持将更小的、紧耦合的组件装配成松耦合服务。这有助于促进应用模块化,因为服务由更小的单元组成,它们作为一个组合被一起管理。它还有助于减少复杂性,因为远程、异步调用可以被限制在应用的关键部分。

InfoQ:你们如何正视 SCA 中的管理和运营?

Jim:这一部分被认为是未来的工作重点。在 BEA 看来,我们看到 SCA 和装配模型极大地增强了管理,因为后者提供了描述运行时环境的统一方法,这些环境通常由不同技术组成。

Meeraj:在概念上,SCA 有两方面导致管理简化。域(domain)概念,如 Jim 所说的,它提供了一个统一视图。另一个重要的概念是递归。递归允许在域的更高层定义策略,然后将它们强制到内部所有组件实现和交互。Fabric3 在支持异构联邦域上花费了不少功夫。这样,SCA 为管理复杂互联系统提供了基础。但是的确,我们需要更进一步对有助于管理和运营的具体策略提供支持。

InfoQ:在采用 SCA 的过程中,你们遇到过什么困难?

Meeraj:缺少成熟的产品绝对算的上是一个,但是对于我们来说,SCA 是迈向构建 SOA 应用的重要一步。规范尚处于 1.x 级别,而且还会发展。参与者的背景很广泛,不仅仅限于厂商。在技术委员会中,我们提供和得到实践反馈,同时面对现实世界的问题:与规范中指定的场景相比,策略如何工作在某个确定的场景中。这是一个非常积极的工作环境。

InfoQ:SCA 的关键好处是什么?

Meeraj:通常说的,如果你想比较 SCA 和其他技术的话,它没有将你限制在特定技术之上。你可以使用不同的组件实现技术如 Spring、Java、BPEL、脚本语言等和各种传输机制如 HTTP-WS、JMS、RMI、Hessian、 AMQP 等。SCA 还为我们解决了范围广泛的重要问题:装配、组合、传输层抽象和绑定、意图和策略、域……SCA 为我们提供的仍旧是一个轻量级编程模型,但是解决了大范围的复杂问题。我们真的期望看到来自厂商更多的推广,帮助他们的客户拥抱这些技术。

Jim:SCA 的确是应用开发的下一阶段。SCA 代表了一些人们常常统称为“SOA”的具体步骤:重用、组合、策略管理和松耦合服务。SCA 最大的好处就是试图以一种比传统方法简单得多的方式提供这些特性。

Meeraj:SCA 不只是呆板地实现 SOA 典型视图:不是所有东西都是松耦合或是无状态的。在你应用的某些层级,你有紧耦合的细粒度组件,经常有有状态的会话,你需要的会话回调支持等等。SCA 谈论的是这些基于 SOA 的应用构建方式:递归地构建它们。SCA 的确代表了一组描述你如何构建基于 SOA 应用的规范。

查看英文原文 Interview: Jim Marino and Meeraj Kunnumpurath on SCA and Fabric3

2008-05-05 08:321127
用户头像

发布了 255 篇内容, 共 56.5 次阅读, 收获喜欢 10 次。

关注

评论

发布
暂无评论
发现更多内容

掌握 Dubbo:入门教程

Apifox

程序员 gRPC dubbo RPC 开发

CST电磁仿真软件配置的CPU、内存、显卡显存越大越好吗?

思茂信息

cst cst使用教程 cst操作 cst电磁仿真 cst仿真软件

APP流水线测试领域探索与最佳实践 | 京东物流技术团队

京东科技开发者

测试 app测试 app自动化测试 企业号 7 月 PK 榜

SolidUI AI生成可视化,开创性开源项目,版本0.1.0 功能讲解

李孟聊AI

Web 2D 3D AIGC ChatGPT

企业如何落地DevOps(下)

老张

DevOps 软件工程

体系完整的数智化底座支撑企业创新发展,实现国产替代

用友BIP

国产替代

持续推进平台化、生态化用友助力数智化安全有效落地

用友BIP

信创 国产替代

构建学生数据库

猫九

数据库·

论文解读|TuGraph Analytics 流式图计算论文入选国际顶会 SIGMOD

TuGraphAnalytics

大数据 论文 图计算 SIGMOD GeaFlow

Unity JobSystem使用及技巧

快乐非自愿限量之名

Unity 教程

从混沌到秩序的蜕变,SRE解码云计算运维奥秘

鲸品堂

云计算 SRE SRE实践 企业号 7 月 PK 榜

浅谈业务级灾备的架构模式

得物技术

运维 稳定生产

网心科技入选2023年“边缘计算技术创新先锋案例”

网心科技

边缘计算 边缘云 AIGC

多领域应用落地,火山引擎ByteHouse加速云数仓升级

字节跳动数据平台

TDengine“露面”中国油气田企业智慧油田技术交流大会,为时序数据处理带来全新思路

爱倒腾的程序员

涛思数据 时序数据库 ​TDengine

云原生K8S精选的分布式可靠的键值存储etcd原理和实践

不在线第一只蜗牛

云原生 k8s etcd

数智化底座正在成为当前竞争的焦点

用友BIP

数智底座

Mybatis-SQL分析组件 | 京东云技术团队

京东科技开发者

mybatis sql mybatis入门 企业号 7 月 PK 榜

DataBuff 如何结合 Opentelemetry 监控 golang 应用

乘云数字DataBuff

云原生 APM 可观测性 应用性能监控 智能运维AIOps

如果我是一个小白,怎么开发网页

猫九

前端

SpringIoc容器之Aware | 京东云技术团队

京东科技开发者

spring aware springloc Aware 接口 企业号 7 月 PK 榜

华为云GaussDB亮相2023可信数据库发展大会,荣获三项评测证书!

华为云开发者联盟

数据库 后端 华为云 华为云开发者联盟 企业号 7 月 PK 榜

华为Mate X3、P60系列用户隐藏福利:唤醒小艺解决相册搜图难题

最新动态

2023开放原子全球开源峰会,蚂蚁图计算平台开源业内首个工业级流图计算引擎

TuGraphAnalytics

GitHub 开源 图计算 蚂蚁 GeaFlow

我感兴趣的技术四剑客 | 社区征文

法医

前端 年中技术盘点

全新技术驱动预算管理全面升级

用友BIP

全面预算

使用第一性原理思维思考如何打造提高生产力的平台 | 京东云技术团队

京东科技开发者

数字化转型 平台工程 企业号 7 月 PK 榜

怎样实现纯前端百万行数据秒级响应

EquatorCoco

前端 表格控件

从大数据到图计算-Graph On BigData

TuGraphAnalytics

GitHub 大数据 开源 图计算 GeaFlow

谁在以太坊区块链上循环交易?GeaFlow+Kafka的0元流图解决方案

TuGraphAnalytics

区块链 以太坊 kafka 图计算 GeaFlow

Kubernetes云原生实战:分布式GeaFlow实现图研发,构建第一个商业智能应用

TuGraphAnalytics

Kubernetes 云原生 k8s BI 商业智能

Jim Marino与Meeraj Kunnumpurath专访:关于SCA和Fabric3_SOA_Jean-Jacques Dubray_InfoQ精选文章