写点什么

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

  • 2008-06-29
  • 本文字数:1340 字

    阅读完需:约 4 分钟

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

一种解决这种复杂性的可能方案是“SOA 编程语言”——针对SOA 的领域特定语言,如 Wsper Einstein 。这些语言背后的动机是进一步提升抽象层次,使之更贴近实际的 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

2008-06-29 23:53756
用户头像

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

关注

评论

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

软件测试/测试开发/全日制 | 前后端协同工作:Python全栈开发的团队合作实践

测吧(北京)科技有限公司

测试

龙蜥操作系统上玩转铜锁密码库

OpenAnolis小助手

阿里云 操作系统 国密 龙蜥社区 铜锁

软件测试/测试开发/全日制|Pytest参数化神器,pytest.mark.parametrize()使用

霍格沃兹测试开发学社

天翼云亮相操作系统大会&openEuler Summit 2023,斩获多项大奖!

天翼云开发者社区

云计算 大数据

感恩有你|一起见证 OpenTiny 这5个锦鲤时刻

OpenTiny社区

开源 前端 低代码 组件库

数据驱动运营?试试这款开源工具做可视化分析!

ClkLog

解读 $mash 通证 “Fair Launch” 规则,将公平发挥极致?(幸运池玩法)

石头财经

中国电信天翼云全国产化大数据平台落地广西!

天翼云开发者社区

云计算 大数据 云平台

征程万里,行则将至|博睿数据2023年度盘点

博睿数据

程序性能优化全能手册

快乐非自愿限量之名

php 性能优化

K8S学习指南(3)-minikube的安装

俞兆鹏

聚道云软件连接器助力某动漫行业公司实现财务自动化

聚道云软件连接器

案例分享

通过聚道云软件连接器实现金蝶软件与客如云软件的无缝对接

聚道云软件连接器

案例分享

购买体育赛事直播系统源码,如何避免知识产权侵权和其它法律风险

软件开发-梦幻运营部

程序员真是越来越懒了,Api 文档都懒得写?程序员:Api工具惯的!

不在线第一只蜗牛

软件测试/测试开发/全日制|pytest用例执行顺序,这篇文章就够了

霍格沃兹测试开发学社

恭喜 Databend 上榜 2023 开源创新榜「优秀开源项目 」

Databend

软件测试/测试开发/全日制 | Python全栈开发实战:构建完整的Web应用

测吧(北京)科技有限公司

测试

物联网与低代码: 连接人与数字世界的无限可能

不在线第一只蜗牛

低代码 物联网

K8S学习指南(2)-docker的基本使用

俞兆鹏

MegEngine 11-12 双月报:新版本发布,开发者福利课程,MegEngine 使用技巧,精彩不容错过!

MegEngineBot

深度学习 开源 框架 寒武纪

Scrum敏捷研发管理流程及示例

顿顿顿

Scrum 敏捷开发 Scrum Master 敏捷项目管理 敏捷研发管理工具

TuGraph Analytics作业监控面板:运行时组件上的高效分析工具

TuGraphAnalytics

分布式 监控 图计算

6本报告,助你2024招聘「才」源滚滚!

用友BIP

智能招聘

一文详解动态 Schema

Zilliz

数据库 Milvus shema

K8S学习指南(1)-docker的安装

俞兆鹏

数字藏品如何赋能线下实体?以 BOOMSHAKE 潮流夜店为例

Footprint Analytics

NFT 数字藏品

演讲实录|博睿数据副总裁杨雪松:可观测性建设之路(上)

博睿数据

加入openEuler训练营,一起探索开源世界的无限可能!

科技热闻

一图回顾 Apache IoTDB 的 2023!

Apache IoTDB

软件测试/测试开发/全日制|Pytest都有哪些命名规则?

霍格沃兹测试开发学社

Einstein:一门实验性的SOA第四代语言_SOA_Boris Lublinsky_InfoQ精选文章