Microsoft ties high-level code to Web development with Volta

By Nate Mook and Scott M. Fulton, III, BetaNews

December 7, 2007, 1:15 PM

The long effort to make it technically feasible for already skilled developers to produce Web applications using high-level languages like C++, may at last be paying off.

It's no secret that Microsoft has been looking for ways to tie higher-level application programming to Web-based deployment, so that more traditional developers using the principal .NET Framework languages -- including C++, C#, and Visual Basic -- can make multi-tier applications that run in clients' browsers, without having to learn a different language like JavaScript or Python. It's the clearest indication of any still remaining that Bill Gates is still in charge of Microsoft.

On Wednesday, the company unveiled its next step in that effort: a Web development toolkit called Volta whose objective is to deploy applications written using conventional single-tier, monolithic architecture in multi-tier environments, simply by tying in a few libraries and throwing a couple of switches.

"When Visual Basic 1.0 first came out, Windows programs were hard," admitted Volta group product manager Alex Daley in an interview with BetaNews. "Now the same is true for Web development. You have to know about XML, CSS...We're trying to take away all that complexity, in order to make sure that normal developers can write Web applications."

The basic idea behind Volta is that an application is incubated in a client-only environment. You compile and test it on a stand-alone system to make sure it functions properly. For a Web application, the difference may primarily be simply uncoupling the front end controls from the back end logic, then distributing the front end over the network. The code for that runs on the client, while the back end continues to run on what's now the server, just as it did before.

Plotting the fork in the road

There isn't a basic determining factor yet -- a "white dotted line," if you will -- for what parts stay on the server and what gets distributed to the client. Microsoft may be hoping that this little part of the picture gets addressed along the way.

Microsoft offers a complete description of the basic concept of the Volta development process in VS 2008, which involves creating a stand-alone application first, splitting it into tiers later, and then testing the profile to make certain the client tier is deployable. You do begin your project by declaring it a "Volta application" -- you don't just convert stand-alone C++ or C# programs you've already developed.

In typical Microsoft fashion, the process would have you build the user interface first (step 2), then build the business logic behind it (step 3) before wiring them together (step 4). In practice, many programmers prefer to build the back end logic first prior to the front end, and there's probably no reason why steps 2 and 3 can't be swapped for one another for Volta.

The "wiring them together" part involves invoking the Document Object Model, and it's here where Microsoft assumes you're writing a modern .NET application rather than something that invokes the old MFC class library. Obviously, "traditional" applications in that sense aren't compatible with Volta; and it's because Microsoft has shifted its focus to DOM-oriented front ends that splitting that part into a distributed client tier, run through the client's browser, becomes feasible.

Only after the stand-alone application is fully functional do you begin the process of refactoring for multiple tiers, to use Volta's term for it. With Volta available as a VS 2008 plug-in, you have the choice of which modules run at the origin (what will become the server once the app is deployed), literally from a dialog box. Making that choice plugs custom properties into your code for you.

At that point, Volta's principal architect Erik Meijer told BetaNews, you use Volta's and VS 2008's profiling tools to detect where the dividing line between server and client belongs.

"When you have one code base that covers client/server and all the plumbing in-between," Meijer said, "you can see how it performs and decide which tier to run your code in." That performance data comes from the default trace viewer in VS 2008.

After you make that split, this is where a tricky part begins: You do make some changes to your code, specifically for asynchronous invocation. Your application was running like clockwork on your stand-alone system before, but now clockwork is the very thing that'll work against you, because the front end will eventually be remote -- it's on another system, and independent of the framework set up for your back end logic. So you have to adapt your code for splitting off that thread; it's not too much difficulty, but it's the only part of Volta programming that currently resembles surgery.

In a blog post by ZDNet's Mary Jo Foley on Friday, Meijer demonstrated -- in a rather roundabout way -- one of what he considers Volta's principal benefits, especially when compared to the Google Web Toolkit: Besides the distinction that GWT is a "beta" while Volta is an "experiment," as Meijer put it, Volta is not bound to one language. It leverages the power of .NET's intermediate language compiler MSIL, while "GWT takes source code written in Java only and directly compiles it into JavaScript," he explained.

Finding the proper pidgeonhole for Volta's marketing push

Microsoft is marketing Volta similarly to the way Adobe is marketing its AIR toolkit, with the message that now you can use familiar tools you already know to deploy high-grade network applications. And that's a sign that Adobe's message may be catching on. But Microsoft's underlying methodology is almost completely different, not using JavaScript or AJAX or Flash or Flex -- not subscribing to Adobe's premise that you "already know" those tools. Instead, it uses libraries that are plugged into Visual Studio 2008.

But because the marketing is so similar, Web developers are begging the question: Will Volta be tied in with Silverlight, Microsoft's networkable graphics platform? Strangely, you get two different answers to that question depending on whom you ask. While Microsoft's Alex Daley advised us that Volta and Silverlight were two separate tracks, essentially two separate developer groups, careful readers of Volta's own documentation have already noticed where it mentions Volta can be used in conjunction with Silverlight, presumably on the client side.

Since Silverlight can be used to develop a stand-alone application with a rich, graphical front end just about as easily as a distributed application, it would seem Silverlight is perfectly compatible with the development model Meijer has outlined.

The marketing division of Microsoft is still looking for a flashier, more attention-grabbing "wrapper" for Volta, besides Meijer's message of being able to use the tools already available to you -- "what's already in the room," to use his phrase -- to make distributed applications. It's already tried to adapt the "cloud computing" concept to the project, so far without much luck; there's nothing the least bit "cloudy" about Meijer's multi-tier application model.

And while Daley explains Volta as "extending .NET to fulfill the promise of the software-plus-services application," Meijer makes the technically more accurate point that Volta doesn't extend .NET at all. In fact, it actually puts .NET to use in the way it was originally intended, making .NET into an unquestionable contender against Java in a way that developers can no longer ignore.

Add a Comment (7 Comments)

BetaNews reserves the right to remove any comment at any time for any reason. Please keep your responses appropriate and on topic. Foul language and personal attacks will not be tolerated.

Name (required):

E-mail (required):

Enter Your Comment:

By Tutor

edited Dec 9, 2007 - 8:34 PM

Sounds like they try again to tie web stuff to their Windows monopoly.

Score: 0

By Tene

edited Dec 9, 2007 - 5:16 PM

Hm, I may be missing something here, but I thought ASP and PHP already did this. Unless the meaning of high level changed since I studied CS, and PHP suddenly became lower level than C++. Or perhaps I'm just too critical to ... understand ... PR.

Score: 0

By spiked

edited Dec 11, 2007 - 12:02 AM

ASP and PHP are only "high level" from the standpoint of language semantics. In the context of Volta, "high level" really refers to the idea that the developer shouldn't have to deal with the details of web-specific issues like state management, event handling, browser compatibility, etc.

ASP and PHP have some features which can be used by a developer to address these issues, but the developer still needs to understand the issues and how/when/if to use those features. For example, both ASP and PHP implement server-side "session" objects which can be used for state management, but there are many other ways to maintain state which could be better for any given web app (e.g. cookies, hidden fields, URL query strings or other http request headers, and client-side userdata stores available in IE, Java, Flash, etc).

To put it simply, ASP and PHP let you program Session objects with high-level syntax, but you still need to know to do so. In contrast, "traditional" app development doesn't normally require any consideration to be given nor effort to be spent on state management. In a traditional app, your code is always loaded and executing while in use, so "state" is nothing more than the current contents of memory. This is just one of many fundamental distinctions between web apps and other apps.

The challenges that Volta faces are old ones that many products have tried to solve. Historically, most attempts have been based on various wrappers, libraries, runtimes, etc. using Java, AJAX, ActiveX, Flash, or some combination. I've seen lots and lots of impressive demos over the years but ultimately, every product has fallen short when it comes time to build serious web apps which are functional, secure, and scalable. It's just really hard to encapsulate everything web-specific in web development.

Having said all this, I took a look at Volta and all I really see at this point is the same old half-baked stuff, repackaged for Visual Studio 2008. The current implementation has a lot of holes and limitations, with the worst part being that some of the holes don't look like Microsoft has any real plan to fill. Of course, they haven't claimed that this will go anywhere. After all, that's why Volta is a "Lab" project.

Score: 0

By khetos

posted Dec 8, 2007 - 10:27 AM

i think this could be a good/very bad thing.

it could be great, to allow the programming lunguages to be web portable,
but the down side, a whole new ball game of viruses and crap comming from this..

Score: 0

By ConceptJunkie

edited Dec 8, 2007 - 1:55 PM

Unless this is "Active X 2008" I wouldn't see there being an inherent security issue over any other language. It's simply a matter of properly sandboxing your code. Microsoft always ignored this in the past to make things more flexible and functional, and in doing so made Office and IE the security nightmare they were for many years. I think even MS has learned that lesson and the idea of providing one real unified development platform for Web apps has to be better than horrible mish-mash of halfway implemented solutions which has been Web development for most of its existence can only be a good thing. And of course, if it's just another vehicle for Microsoft lock-in (which is likely) then we can safely ignore it and continue with the other similar solutions.

Score: 0

By khetos

posted Dec 8, 2007 - 10:20 AM

*cough* spam bot *cough*

Score: 0

By mdotwills

posted Dec 7, 2007 - 9:30 PM

mixed feelings.

Score: 0