最新发布《数智时代的AI人才粮仓模型解读白皮书(2024版)》,立即领取! 了解详情
写点什么

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

评论

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

模块二作业

薛敏

LeetCode-67. 二进制求和(java)

bug菌

Leet Code 7月月更

C#入门系列(三十一) -- 运算符重载

陈言必行

7月月更

服务器内存故障预测居然可以这样做!

vivo互联网技术

运维 内存监控 EDAC 内存预测

莫慌!Java 多商户外贸版系统这不就来了么

CRMEB

vue2升级vue3:vue3 hooks库选用

zhoulujun

Vue3 Hooks vueuse ahooks

Prometheus 运维工具 Promtool (二)Query 功能

耳东@Erdong

Prometheus 7月月更 Promtool

第二届中国Rust开发者大会来啦,完整议程大曝光!

Mike Tang

rust rust conf

为啥谷歌的内部工具不适合你?

laofo

DevOps cicd 研发效能 工具链 谷歌

算法题每日一练---第10天:时间显示

知心宝贝

算法 前端 后端 7月月更

C# Serialport的发送和接收

IC00

C# 7月月更

Qt | 关于如何使用事件过滤器 eventFilter

YOLO.

qt 7月月更

2B和2C

白粥

vue2升级vue3:Vue Router报错,directly inside <transition> or <keep-a

zhoulujun

Vue3 router JSX tsx

vue2升级vue3:Vue Demij打通vue2与vue3壁垒,构建通用组件

zhoulujun

Vue3 vue2 demij vue2有vue3兼容

vue2升级vue3: h、createVNode、render、createApp使用

zhoulujun

Vue3

vue2升级vue3:provide与inject 使用注意事项

zhoulujun

Vue3 provide inject

如何使用Docker内的kafka服务

程序员欣宸

Java kafka 7月月更

vue2升级vue3:单文件组件概述 及 defineExpos/expose

zhoulujun

Vue3 expose

入门前端 -- CSS

bo

CSS 前端 7月月更

万字详解“用知识图谱驱动企业业绩增长”

博文视点Broadview

Kubernetes网络插件详解 - Calico篇 - 概述

巨子嘉

语音聊天app源码——钠斯直播系统源码

开源直播系统源码

直播系统源码 语音聊天系统 语音聊天软件 一对一语音聊天系统

一种分布式深度学习编程新范式:Global Tensor

OneFlow

深度学习 编程 分布式

如何写一篇百万阅读量的文章

六月的雨在InfoQ

内容 个人提升 写作技巧

前端食堂技术周刊第 45 期:Vite3.0、第91次TC39会议、Figma背后的CSS、B 站事故复盘、图片优化工具

童欧巴

前端 deno vite TC39 figma

java零基础入门-异常、线程(上)

喵手

Java 7月月更

STM32+MFRC522完成IC卡号读取、密码修改、数据读写

DS小龙哥

7月月更

面试突击68:为什么 TCP 需要 3 次握手?

王磊

Java 面试题 网络

期待已久的 RocketMQ Summit 等待你的参与!

阿里巴巴云原生

Apache 阿里云 RocketMQ 云原生 消息队列

Okaleido生态核心权益OKA,尽在聚变Mining模式

西柚子

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