写点什么

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:52894

评论

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

架构师训练营 作业四

开拓纪

架构实战营 - 模块四作业

Sun

优化docker镜像的几种方法

运维研习社

Docker 镜像 优化技巧 5月日更

在浏览器里使用SAPGUI里的SE80

汪子熙

JavaScript SAP abap Fiori SAP UI5

如何将iso文件安装到Virtual里的ubuntu去

汪子熙

Linux ubuntu windows 虚拟机 Windows 10

如何使用Putty登录安装在VirtualBox里的ubuntu

汪子熙

ubuntu windows 虚拟机

如何用ABAP代码读取CDS view association的数据

汪子熙

CDS SAP abap CDS view

如何在ubuntu上安装virtualbox的driver module vboxdrv

汪子熙

ubuntu 虚拟机 vboxdrv 驱动

ABAP的语法高亮是如何在浏览器里显示的

汪子熙

SAP abap SAPGUI 语法高亮

CRM订单状态的Open, In process和Completed这些条目是从哪里来的

汪子熙

CRM SAP ERP abap

如何使用代码获得一个function module的Where Used List

汪子熙

CRM SAP abap SAPGUI

高性能 JavaScriptの六 -- 老生常谈Ajax

空城机

JavaScript ajax 大前端 5月日更

如何给VirtualBox虚拟机的ubuntu LVM分区扩容

汪子熙

虚拟机 Cloud virtualbox CloudFoundry

S/4HANA for Customer Management里的搜索分页处理

汪子熙

CRM SAP abap S/4HANA

设计千万级学生管理系统的考试试卷存储方案

俞嘉彬

如何使用腾讯云提供的云主机

汪子熙

腾讯云 云主机 Cloud

CRM, C4C和Hybris的工作流简介

汪子熙

CRM SAP C4C Hybris Commerce Cloud

那些年我用过的SAP IDE

汪子熙

ide SAP abap SAPGUI

SAP Fiori里的List是如何做到懒加载Lazy load的

汪子熙

JavaScript SAP Fiori SAP UI5

S4HANA和CRM Fiori应用的搜索分页实现

汪子熙

CRM SAP Fiori SAP UI5 S/4HANA

ABAP和Java里关于DEFAULT(默认)机制的一些语言特性

汪子熙

SAP abap Netweaver SAPGUI

如何使用SAP Cloud for Customer里的ABSL代码调用Web service

汪子熙

SAP C4C Cloud for Customer

金融科技如何在产业互联网蓝海中扬帆远航?大数据、区块链与物联网应用被看好

CECBC

ABAP git客户端的简单介绍

汪子熙

GitHub SAP abap

会说话的ABAP report

汪子熙

SAP abap SAPGUI

观察者模式在One Order回调函数中的应用

汪子熙

CRM SAP abap

如何在Chrome development tool里查看C4C前台发送的未经 GZIP 压缩之前的请求细节

汪子熙

chrome SAP C4C Chrome开发者工具

SAPGUI里实现自定义的语法检查

汪子熙

SAP abap SAPGUI 语法检查

ABAP宏的调试

汪子熙

调试 SAP abap macro

人生算法:做事要闭环

石云升

读书笔记 职场经验 5月日更 人生算法

如何证明CRM WebClient UI上的应用是有状态(Stateful)的

汪子熙

CRM SAP abap WebClient UI

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