InfoQ

新闻

Einstein:一门实验性的SOA第四代语言

作者 Boris Lublinsky译者 胡键 发布于 2008年6月29日 下午11时53分

社区
SOA
主题
SOA平台,
领域特定语言

实现SOA一般需要使用多种技术来实现诸如分布式、并行处理、编配等需求。虽有多种工具来支持这些需求的实现,包括解决调用的Web服务框架,解决路由的企业服务总线(ESB),实现业务流程的编配引擎等,但是实现SOA依旧是一项艰巨的任务,至少需要对这些完全不同的技术、它们的编程模型、它们的实现和部署方式等都有所了解。

一种解决这种复杂性的可能方案是“SOA编程语言”——针对SOA的领域特定语言,如WsperEinstein。这些语言背后的动机是进一步提升抽象层次,使之更贴近实际的SOA开发问题。正如Edsger Dijkstra所说的:

任何一样工具最重要但也是最难以捉摸的地方,是对那些学习使用该工具的人们的习惯的影响。如果这里的工具是一门编程语言的话,那么该影响就是对我们思考习惯的影响(不论我们是否喜欢它)。

由于Wsper已经在Jean-Jacque Dubray的InfoQ迷你书《组合软件构造(Composite Software Construction)》中得到了很好的描述,所以本文接下来将主要讲述Einstein。

Einstein是一门针对分布式SOA复杂环境而设计的语言,它建立在以下主要原则基础之上:

  • 分布式:Einstein被设计成允许(潜在的)每条指令可以在彼此分离的机器上执行。接下来由用户决定代码中实际期望的分布式和并发性的程度。
  • 事件驱动:Einstein是一门基于流程的编程语言,各条指令通过消息进行通信。
  • 并发性友好:在创建时,Einstein就考虑支持并发性;它使用一组经过验证的避免共享状态的技术(消息传递、只读元组等),具备运行时感知的线程安全性。
  • 适当的复杂性:Einstein采用了一些包括资源和模型在内的简单技术来减少实现分布式系统的复杂性。
  • 代替各种技术:Einstein意在解决过去用来进行多系统集成的技术过多问题。目前,在构建一个资源交叉(cross-resource)系统时,我们常常依赖ESB、网格技术、分布式状态系统、协调技术(如BPEL)和工作流等技术。Einstein被设计成一种代替所有这些技术的工具。

Einstein的语言基于以下概念:

  • 资源,与变量极为相似,但是一般是粗粒度的。资源使用URI来访问。资源可被描述成不稳定(可安全用于多线程访问)、局部(不打算用于多节点访问或串行化)和幂等(接收一条消息多次的效果和只接受其一次的效果相同)。
  • 提供者,为任何资源接收、传送、执行、查询、路由或以某种方式处理消息提供了一致接口。一个提供者可被分成3个组件:ResourceProvider(扮演一个资源工厂),Resource(实现)和Facades(一个资源为其所提供功能暴露的简单粗粒度接口视图)。提供者被自动加载进Einstein注册中心,中心包含了与所有可用资源和提供者相关的信息。
  • 消息是Einstein资源间交换数据的主要机制。一条消息的有效负荷包括一个数据对象而非一个语言对象,它允许多种数据格式(如XML、对象图、CSV文件等)与Einstein进行交互。
  • 执行组,包括流程执行组(顺序执行、类似编配语言中的sequence)、元组执行组(并行执行,类似编配语言中的fork/join)、组合执行组(与元组类似,但是至少有一个分支结束时即结束)和映射执行组(以上组的结合)。

超级实验性的Einstein 0.1版已经现在发布了。根据项目路线图所示,核心语言的预览要到7月15号才出来,接着到9月1号正式发布核心语言。

查看英文原文Einstein: an Experimental 4GL for SOA

没有回复

回复

独家内容

世界顶尖运动队教练的成功秘诀

本文列出了来自于顶级教练Marc Lammers的9条原则,他是在打造世界最佳曲棍球队的过程中发现这些原则的,文章把这些原则映射到了软件开发实践之中。

探索JVM上的LISP

本文由Per Jacobsson所作,目标读者为有意了解Lisp的Java开发人员。文章探讨了当前可以运行于JVM上的不同Lisp方言,以明快简洁的方式介绍了Lisp程序设计工作机理和其独特之处,并在最后演示了Lisp代码同Java系统的整合过程。

Ruby/Rails: 不一样的'Web'应用

本文以一个实际应用的例子为引子,探讨Ruby/Rails在非传统web系统中应用,以及研究如何定制以Rails为基础的领域特定的MVC框架。

认识云计算

本视频对云计算进行了简要的介绍,主要包括了五部分内容:首先带大家认识“云”,然后对计算机的发展过程进行了阐述,接着介绍了业界现状和企业级/世界级计算的新布局,最后对云计算做了一下展望。

AtomServer:数据分发的发布动力

在这篇文章中,Bryon Jacob和Chris Berry介绍了AtomServer,一个基于Apache Abdera的完整Atom存储实现。在去年,作者一直致力于为其雇主——Homeaway——实现一个Atom存储,现在已开源了其Atom存储框架:AtomServer。

从卓越工程角度看微软中国开发团队的成长

开发团队的成长离不开优秀的人才,简捷有效的流程和高效率工具这三个卓越工程系统中的重要因素。本文作者从这三个因素分析了微软中国开发团队是如何“从优秀到卓越”的。

利用Ruby简化你的Java测试

本文是Productive Java with Ruby系列文章的第一篇,我将从单元测试这个话题开始,让Java的开发人员能够在实际工作中利用Ruby提高工作效率。

与赵进聊SaaS

InfoQ中文站有幸与阿里软件的首席架构师赵进在一起探讨了SaaS的相关话题,包括SOA和ASP与SaaS的异同、云计算、SaaS的前景、它的关键技术、技术瓶颈等等。