We need you!

We're working hard on the next version of Developer Fusion. Let us know what you think we should be up to!

Members

Technology Zones

Articles

Hosted By

MaximumASP

Info

Rated
Read 2,223 times

Contents

Related Categories

The Zen of Volta - Tier Splitting

Tier Splitting

TierSplitting is a far more radical refactor than the Async one. In this case you annotate types and the Volta compiler rewrites the IL to distribute the assemblies into multiple tiers. This allows you to concentrate on developing the functionality of the application and decide about where things are deployed later in the development cycle.

With Volta, the developer determines which classes run on the server and which ones will run on the client through a new option in the Refactor menu:

Refactor by Tier splitting

This adds the [RunAt(“someName”)] attribute and sets up the project to run a test web server to host the server part of the application:

[RunAt("Server")]
class QuoteServer {
    //...
}
Here "Server" is a reference to a URL in the app.config file that corresponds to the location where this code will live. You can also use the [RunAtOrigin] attribute in web applications to indicate that the code should run on the web server hosting the application. With client/server applications, this option is not available since there isn’t a defined “origin” server.

How does Volta pull off this tier splitting magic? First, Volta rewrites the class into two separate implementations. The client-side implementation becomes a proxy – it looks and acts like the real QuoteServer, but in reality is going to send a request to the server to perform the work. The server side ends up with the basic QuoteServer class with some additions to manage state.
The Volta compiler also creates a __TierSplit.aspx web page that is used as the endpoint for the server code. This becomes evident when we run a Volta application – it creates a Volta test server icon in the tray that is used to display the diagnostics window:

 

logged requests

Each method and property access from the client portion (classes not decorated by RunAt attributes) to classes running on the server(s) will cause a server round-trip. As you can see, the effect is very seamless and easy to achieve with this preview.

As easy as this is, I do have some reservations about the current implementation of tier-splitting, which rather than spend more time repeating here I’ll just direct you to the blog posts, here and here.
 

Conclusion

All in all, I think Volta is a very exciting technology with some real potential benefits for developers. The more time developers can concentrate on solving the real business problems rather than writing the plumbing the better. I also think Volta has to be seen for what it is at the moment – a technology preview. This is not a finished product, but an idea with a bunch of implementations that are applicable to different scenarios; some of which are very compelling. That said, it clearly has a long way to go before whatever Volta becomes is released. Now is a great time to pull down the bits and experiment with how you could conceptually use this technology. Send feedback to the team – this is exactly why they released the preview. We have a chance to influence the direction of a potentially very powerful technology.

Richard is the CTO of DevelopMentor UK. He began life as a mainframe programmer writing ALGOL and COBOL, but jumped to OS/2 after a year. In 1995, he started developing under Windows and got his first taste of COM. He then spent quite a few years working with COM from both C++ and VB. In 2000, he discovered .NET and has been living in the managed world ever since. Richard spends most of his time these days digging around in the internals of the runtime and living the Service-Orientated Lifestyle with Biztalk, WCF, and WF. He has worked on a number of high profile projects, including being the middle-tier architect of the UK National Police Systems. Other clients have included investment banks, software houses, and financial services companies.

Comments