Posted By: Charles | Dec 12th, 2007 @ 1:12 PM
Erik Meijer and a small team of very sharp developers (including Brian Beckman) have cooked up an intriguing toolset for building multi-tier distributed applications: Volta.

When the Volta CTP release announcement hit the wire last week, the press declared Volta as a Java killer, etc. In reality, Volta is primarily, and most importantly, a tier splitting system where the details of the tiers aren't of primary importance.

So, the most obvious case is Silverlight 2.0 as the client tier and a web server as the server tier... This is a great scenario since Volta can split IL to IL without having to resort to IL translation to, say, JavaScript (which has gotten too much attention).  Further, execution contexts such as XNA, WinForms, DHTML, SVG, VML, even SQL are realistic client targets (tiers) for Volta. Then there's the notion of a local "distributed" system (think of applications running on a single client as the tiers) where Volta also makes sense as a means of easily composing the system.

Too much has been made of the IL to Javascript translation capabilities, so much so that people are apparently not seeing the forest for the trees. Well, have no fear. Over the coming days you are going to learn more about Volta than you can imagine and the people who'll you learn from also happen to be the people who thought up and implemented Volta.

The most important thing here, technically, is that Volta provides an intuitive and elegant toolset for composing concurrent distributed muti-tiered applications. 
 
Think of Volta as a technology that facilitates communication between distributed execution contexts (a tier is just an execution context in this model). Using Volta in an client-web server scenario is only one approach. Volta could be used in many more interesting contexts (XNA, WinForms, WPF, even Singularity – use your imagination…).

This is part 2 where we continue to dig deeply into Volta. Lot's of whiteboarding and even a code sample using VS.

See part 1 here.

Tune in. Learn.
Rating:
0
0
Good show folks.  Been wanting this kind of tier splitting.  However, I see no joy for Winforms apps in any of the samples and don't know where to start.  I also find this idea of IRemotable very, very interesting and will love to learn more about ideas there.  Remotable futures with async callbacks to the server and/or sql will be very cool and just make things so much easier to understand and develop.

Hi Staceyw,

you're right there is no Winforms sample yet, we should add that.

For now, hope this walkthrough might help you out

-in VS2008 create a new "Volta Windows/Winforms Application"
-write a class you want to run on another tier and use it from your winforms code
-right-click on the class, select refactor and choose "Tiersplit..."
-a RunAt attribute will be added to the class as well as an app.config to the project
-hit F5 to launch the winforms app as well as the webserver running the other tier.

If you run into any problems, let us know on the Volta forum:

http://forums.microsoft.com/MSDN/ShowForum.aspx?ForumID=1988&SiteID=1

Regards,

Jeffrey van Gogh
Volta Developer

Plenty of love for winforms Smiley  Winforms has a very nice 2D graphics library. I think the teapot demonstrates that it's pretty  easy to do polygonal 3D graphics if all you have are triangles. Winforms has triangles. The Volta CTP has a fairly general library for integrating Newtonian equations of motion with arbitrary force laws. It wouldn't be difficult to imagine small-scale physics-based games hosted in Winforms. May I leave the rest to the imagination? Smiley

Beckman

You're right, the samples don't cover tier-splitting WinForms applications. However I have a blog post on precisely that topic; see Tier-split Refactoring WinForms Applications with Volta.

-dm

Great stuff guys! I’m really interested in how I can use this with the ASP.NET MVC framework. It would make developing javascript much easier. Will it be possible to have the two frameworks working side by side?

- I like the fact I don't need another assembly which introduces more complexity.  Nice.

- I like the little Volta server for debugging.  I would like a richtext box on it that gets debug Console output.  Also the logging info could be richer.

- Every time I change my code and hit F5, I get a OneCare Firewall blocked a program dialog and I have to Allow it and start over again.  Is there a way to allow this always to avoid the dialog?

- I get errors trying to pass Linq Entities over the remoting boundary.  That said, you get errors trying to pass Linq Entity over WCF because of the circular Refs and a serializer issue.  Is there a solution or do you have to use new DTOs all the time?

- Works with Static methods and static classes so you don't need to new up and hold a proxy ref.  Not sure why that is cool, but it is.

- I like how I don't have to spend a day or two learning wcf config files and such to get started. Nice again.

- I don't see any knobs for server side threading or instancing or procotols, etc.  But assume that will be added.

This is the future and works like how your brain wants it to work. Nice work.  Can't wait for rtm some day.