Volta Frequently Asked Questions
Q: What is Volta?
A: Volta is an experimental developer toolset that allows developers to build standards-conformant, multi-tier web applications using established .NET languages, libraries and development tools. Via declarative tier-splitting, developers architect their applications as a single-tier application, then make decisions about moving logic to other tiers late in the development process- letting the complier manage creating boilerplate code such as communication between tiers. The programmer can still debug and test the application, much as if it were still on the client-tier, because Volta's tier-splitting is deeply integrated with Visual Studio 2008 and the .NET Framework 3.5. In summary, Volta extends the .NET platform to distributed software+services applications, by using existing and familiar libraries, languages, tools, and techniques.
Q: What is the overall goal of Volta?
A: The goal of Volta is to simplify the designing, building, deploying, testing, and debugging of distributed, multi-tier applications, while minimizing the amount of "new stuff" developers must learn. Volta leverages familiar, existing .NET compilers, tools, and libraries and extends them into the distributed realm. Volta achieves this goal by declarative tier-splitting: Volta inserts communication and serialization boilerplate code in response to developer-supplied declarations in the form of .NET custom attributes. By releasing Volta as a technology preview, we hope to learn from our customers how this approach opens up new opportunities and simplifies existing scenarios. Volta is a long-term project and may take many years to realize the full vision. By sharing it early, we hope to collect feedback to drive the ongoing effort as well as to prove the validity of the model early in-the-field.
Q: What are the intended benefits to developers?

Volta makes it easier to develop multi-tier web applications by leveraging the knowledge developers already have from .NET programming experiences. Volta dramatically reduces the amount of "new stuff" developers must learn to move their applications into the distributed realm. Volta also dramatically increases developer agility in the intermediate phases of application development, where change is rapid, by allowing developers to postpone irreversible decisions about tier assignments to the last responsible moment. After tier assignments, Volta's deep integration with Visual Studio debugger and testing infrastructure dramatically improves the deployment experience for developers.

  • Volta automatically creates communication, serialization, and remoting code. Developers simply write custom attributes on classes or methods to tell Volta the tier on which to run them.
  • Developers may base tier assignments on any criteria, such as load management, performance, or location of critical assets and capabilities. Because Volta automates the hidden plumbing code, it is easy for developers to experiment with varying assignments of classes and methods to tiers.
  • Developers can use all the .NET languages, libraries, and tools they already know, including debuggers, profilers, test generators, refactoring, and code analysis tools.
Q: How does Volta differ from commonly used paradigms for developing multi-tier web applications?

A: Unlike other web-application frameworks, Volta starts with a client-side perspective. Once developers are satisfied with an application’s functionality and fully understand the internal object interactions, they decorate the code with declarative attributes -- annotations -- to indicate the parts of the application that should run on other tiers. The Volta runtime leverages as many existing web technologies as possible, such as the CLR, ASP.NET, and standards-based web browsers.

Because developers start with a single-tier application, they can instrument the complete application end-to-end. This is impossible when the application is multi-tier from the start because it would entail mutually incompatible languages, tools, libraries, and programming paradigms.

In addition, Volta offers deep integration with Visual Studio 2008, including the debuggers. Developers can set breakpoints on any tier and follow the flow of control seamlessly. Volta also allows developers to debug with either Internet Explorer or Firefox without leaving Visual Studio. Moreover, Volta supports end-to-end profiling and testing in a manner that cannot be achieved with different programming models in the browser and server tiers.

Lastly, Volta works by rewriting MSIL, the intermediate langage to which all .NET programs are compiled, so it works with all .NET programming languages and libraries, unlike other solutions that focus on a single language or special-purpose libraries.

Q: How does Volta make it easier to build an application?

A: Because developers use the tools and techniques they already know, they can concentrate on the core functionality and business logic of their applications. And, because they can make key architectural decisions considerably later in the development process, developers gain increased agility earlier in the development lifecycle when change is necessarily more rapid. Initially building an application end-to-end as a single-tier application allows rapid prototyping and incremental refinement through refactoring, which includes declarative tier-splitting.

In addition, Volta offers deep integration with Visual Studio 2008, including debuggers, profilers, and testing frameworks. Developers can step through code seamlessly from one tier to another, can set breakpoints on any tier, and trace flows of control across distributed systems. Furthermore, because of a single programming model across multiple tiers, Volta enables new end-to-end profiling and testing for higher levels of application performance, robustness, and reliability.

Q: What do you need to use Volta?
A: The Volta developer toolset requires Visual Studio 2008 and the .NET Framework 3.5 for writing and building applications. Volta applications run virtually anywhere, even where an MSIL runtime is not available. A Volta client-side application can run in most standards-compliant browsers, but can also be targetted also take advantage of MSIL runtimes like the .NET CLR.
Q: What are the use-case scenarios for Volta?
A: Volta caters to client-server applications, including Ajax-style web applications. Through enabling developers to prototype and refine designs through refactoring, Volta is particularly suitable for scenarios where developers cannot or should not partition functionality between client and server up front. In addition, Volta offers the same programming model on the browser and the server, helping developers control the complexities and idiosyncrasies of these different realms.
Q: What skills do developers need to know to build Volta based applications?
A: Developers familiar with .NET development and the Visual Studio environment are ready to build applications using the Volta technology without learning any new languages, APIs, or patterns.
Q: Does Volta do something unique when it compiles a program?

A: Volta first calls on the existing .NET language compilers to generate MSIL from source code . Then, based on declarative attribute annotations, Volta rewrites the generated MSIL and splits a single-tiered assembly to run across multiple tiers.

Based on the same declarative attributes and static code analysis, Volta optionally inserts instrumentation hooks into the code. This allows end-to-end, debugging, testing, performance profiling and security profiling of multi-tier web applications.

When no version of the CLR is available on the client, Volta may translate MSIL into semantically-equivalent Javascript code that can be executed in the browser. In effect, Volta offers a best-effort experience in the browser without any changes to the application.

Q: Do Volta applications run cross-browser and cross- platform?
A: Volta does a best effort of running MSIL in the IE and Firefox browsers. Other standards-compliant browsers may be targeted in the future by the Live cross-browser compatibility libraries that Volta uses. As Live compatibility technology matures, Volta applications will automatically benefit.
Q: Do Volta applications require Internet Explorer to run? Or Silverlight?
A: Volta applications run virtually anywhere, even where an MSIL runtime is not available. This includes traditional rich client applications using the desktop CLR, as well standards-conformant web browsers.
Q: What is the relationship between Silverlight and Volta?

A: Silverlight is a cross-platform, cross-browser implementation of .NET that provides developers with a powerful runtime and toolset for building the richest possible media experiences and RIA’s on the Web.

Volta is about the decision model for tier splitting and the optimization of deployment based on application requirements and target capabilities. Volta has significant implications for making it easier for developers to develop both browser-based and rich applications and to move between them much more easily. As such Silverlight developers can explore using the Volta toolset as part of their solutions.

Q: How does Volta compare to Script#?
A: Script# is a tool to facilitate writing script using C# syntax. Script# only targets JavaScript. Volta leverages the entire .NET suite of languages and libraries including VB and C#. Volta targest multiple platforms, including JavaScript and .NET runtimes. Furthermore, Script# does not have anything like Volta's declarative tier-splitting.
Q: What is the roadmap for Volta? Is it part of any existing product roadmap?

A: Volta is an experiment that enables Microsoft to explore new ways of developing distributed applications and to continue to innovate in this new generation of software+services. It is not currently a goal to fit Volta into a larger product roadmap. Instead, we want feedback from the community of partners and customers to influence other Live Labs technologies and concepts.

Like other technology previews, Volta is not part of any specific product roadmap and we do not provide customer support.However, Live Labs will continue to develop Volta to improve and extend the technology.

Q: Is Microsoft Research's "Rotunda" related to Volta?
A: Similar to other Microsoft Live Labs technology previews, Live Labs has collaborated with Microsoft Research (MSR) and includes the functionality from Rotunda, a research project that provides the essential end-to-end performance profiling feature and is now fully integrated into the Volta toolset.