Microsoft Volta - a cool new RIA technology

I heard about Volta last week and to be honest, I had no idea what it was. "Tier-splitting" sounds interesting but I wasn't sure how it would be used in the real world.

Microsoft Volta - a cool new RIA technology

I heard about Volta last week and to be honest, I had no idea what it was. "Tier-splitting" sounds interesting but I wasn't sure how it would be used in the real world. The blogosphere soundbyte of "Microsoft's GWT" got me more confused. Ed has a very good writeup with a lot of good developer information but he focuses on the Ajax part of Volta. One of the most interesting posts was actually by Mary Jo Foley back before MIX 07. She talked about the rumored project Volta:

The Tesla folks are working on a project code-named "Volta." Volta is all about compiling any MSIL (Microsoft Intermediate Language) assembly into cross-browser-compatible JavaScript. That means by using existing .Net and SQL Server tools, developers — at least in theory, will be able to write a single-tier, client-based application that will be able to be repurposed as a distributed Ajax application.
Volta project

Again, an Ajax reference. There are definitely some similarities. With GWT (Google Web Toolkit) you write Java and compiles it into JavaScript. Volta lets you take .NET code and do the same thing. But there's more to Volta. For one, the "tier-splitting" nature of Volta means you can write in .NET and then tell the compiler which code to run on the client (say, in JavaScript) and which to keep on the server. Okay, that's cool, but why is this applicable to rich Internet applications?

Microsoft is doing some really interesting things with how data is stored and accessed. Bill Gates and Ray Ozzie have often said you shouldn't care where your data lives (in the cloud, on your desktop) just that you have access to it. I think that's becoming a very fundamental part of rich Internet applications. From what I can tell, Volta is directed at that. The Volta blog says "he focus of Volta is on extending the .NET platform to cover the Cloud, hence the essence of Volta is to enable multi-tier and asynchronous programming via declarative attribution and MSIL to MSIL rewriting." Half of that is gobblyde-gook to me, but Volta does all of a sudden make it very easy to tailor your application so parts of it run in the cloud and parts of it run in the client. In theory it would be easy to refactor your application as needs change or as functionality wanes and waxes on the client or server. But it's bigger than that.

Volta webserver

Ed drew out the most important part of Volta. In a paper called "Democratizing the Cloud" [PDF] the architect of Volta, Erik Meijer, says that when no CLR is available on the client, Volta will use what's already there. That means that the .NET application you've written could use Silverlight when it exists, but when it doesn't you could use Ajax or Flash. Writing Flash in .NET isn't a new idea, but coming from Microsoft it's a big step. I don't believe Flash is actually supported yet, but it sounds like they're thinking about it.

So with Volta developers can write in .NET code and then (relatively simply) deploy different parts of their application to the server and to the client in whatever client-side technology they want. There are still big questions about whether you can use this to achieve some of the results you want. But what this does is abstract the client/server development model so that you don't have to think about the cloud, it's all one code base. This is very in line with the idea of your data "just being accessible when you want it" but for developers. Volta is still an experiment and may not see the light of day but it's an interesting concept and when taken in the context of things like Silverlight and Sync, it fits a trend. I also could be totally crazy, so if you have any thoughts, I'd love to hear them :). Also, Gilbert Corrales has some good thoughts.