10 月 23 - 25 日,QCon 上海站即将召开,现在购票,享9折优惠 了解详情
写点什么

Volta:利用重编译开发分布式应用

  • 2008-10-03
  • 本文字数:1032 字

    阅读完需:约 3 分钟

微软 LiveLabs 实验室的 Dragos Manolescu、Brian Beckman 和 Benjamin Livshits 等三人最近发表了一篇关于Volta 的文章,来探讨这个一年前在战略架构论坛2007 上宣布的新技术 Volta 可以用来对架构进行重构,就像 20 多年以来代码重构工具对代码进行重构一样。作者总结了 Volta 产生的背景,以及如何使用 Volta 等:

当前的编程语言和工具集全是为快速而简便地构建顺序的非分布式应用而设计的。 要编写分布式应用,程序员必须学习和使用针对跨层通信、数据编制、同步和安全等领域的底层类库。这些类库的唯一目的就是分布式执行以前只能被顺序执行的应用逻辑。

[但是] 大多数工具和技术迫使我们在写代码之前先进行分离……。在类如RunAtAsync等说明性标注的指导下,Volta 作为一套工具可以将样板代码插入到逻辑标识的同步分布式应用中,或者将非分布式执行文件转换为这些应用。

在 JIT 编译器产生本地代码前,Volta 在保护函数行为的 CIL 层(.Net Common Intermediate Language,.NET 通用中间语言)应用转换。作者认为这一方法的好处有以下几点:

  • 重编译器是语言独立的;
  • 重编译器和编译器分析与优化无关;
  • 在语言规范改动时 Volta 不需要改动,只在 CIL 规范改动时才需要;
  • Volta 支持许多分布式设计最佳实践,比如“所有网络上的调用都必须是异步的”;
  • Volta 提供了语言(用于写代码)与运行时(用于执行代码)间的多对多映射。

Volta 的推出被业界猜测是微软对 Google 的 GWT 所作出的回应。在文章中,作者也提到了这一点:

基于 Web 的 Ajax 类型应用是分布式应用中最为普遍的形式之一。

然而 GWT 不能进行多对多的映射,因为它仅在代码层级进行操作。Volta 提供的 CIL-to-JavaScript 的转换可以做到:

模仿不被 JavaScript 本地支持的高级的控制流功能,比如线程和协程等。

此外 Volta 还提供了端到端的方法和快照功能,来帮助理解隔离效果:

测量代码(Instrumented code)能收集完整的应用轨迹,帮助我们计算剩余量(Latency)和生产量(Throughput)的状态,执行应用诊断等。

作者最后对 Volta 做了简要总结:

将.NET 编程语言、类库和工具扩展应用到云计算。

在不久的将来,他们将主要关注结构安全,更细粒度的层剥离和层迁移等。

虽然在文章中,作者只是提到了如何将 Volta 应用到基于 Web 的 Ajax 类型应用和层剥离。但是我们可以想象,不久他们就会让 Volta 在面向服务架构(SOA)中创建和实施“服务交互“,以对服务和集成服务进行重构。

查看英文原文: Volta: Developing Distributed Applications by Recompiling

2008-10-03 01:521135

评论

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

架构师训练营第五周 - 作业

Eric

极客大学架构师训练营

ARTS打卡(2020.06.29-2020.07.04)

小王同学

ARTS 打卡计划

Git【入门】这一篇就够了

JavaPub

spring

从“金 木 水 火 土”到分布式系统架构设计

常平

分布式 架构设计

如何写好一封简历?

石云升

职场 简历优化 职场成长 简历

分布式系统架构学习总结

qihuajun

工业4.0|要不要用 IO-Link ?

清水河路人甲

工业4.0 IO-Link 工控

分布式系统架构设计 - 从CAP到PACELC

常平

架构 分布式

架构师训练营 第 5 周总结

Lingjun

极客大学架构师训练营

架构师训练营作业-20200705

caibird1984

极客大学架构师训练营

ARTS|Week 6 合并有序列表、团队、MIME类型和IIS

Puran

LeetCode ARTS 打卡计划

分布式系统架构设计 - 一致性hash算法及其改进

常平

分布式 架构设计

程序人生 | 春风得意马蹄疾,一日看尽长安花

YourBatman

Java 程序员 程序人生

架构师训练营总结-20200705

caibird1984

极客大学架构师训练营

第五周作业

赵龙

80%会问到的18个Dubbo面试题,快来看看你都掌握了吗

小新

Java 程序员 架构 面试 dubbo

第五周作业

秦宝齐

学习

第一个Spring程序(代码篇)

JavaPub

spring

一文搞懂分布式消息中间件设计

小隐乐乐

消息队列

唯一路径的动态规划解法,阿里巴巴架构演化路径 John 易筋 ARTS 打卡 Week 07

John(易筋)

动态规划 ARTS 打卡计划 系统架构演化 唯一路径

一篇告诉你什么是Spring

JavaPub

spring

LeetCode | 7. Merge Two Sorted Lists 合并两个有序列表

Puran

Python C# 算法 LeetCode

极客大学架构师训练营 系统架构 消息队列 数据库备份 第10课 听课总结

John(易筋)

负载均衡 极客时间 极客大学 极客大学架构师训练营 消息队列

分布式缓存架构作业

qihuajun

第五周学习总结

赵龙

架构第五周 - 学习总结

J.Smile

极客大学架构师训练营

游戏夜读 | 简单认识一下爬虫

game1night

总结

Mr.Monkey

Python设计模式 单例模式

早睡蟒

Python 面向对象 设计模式 单例模式

一致性Hash算法——架构师训练营第5周

架构 极客大学架构师训练营 一致性Hash算法 第5周作业 负载均衡算法

ARTS Week6

丽子

Volta:利用重编译开发分布式应用_.NET_Jean-Jacques Dubray_InfoQ精选文章