In part 1 of our series on Volta's ongoing conspiracy we covered the GWT myth; in part 2, the performance of JavaScript. Here, we cover a little more of our take on balancing complexity and control when tier-splitting.
Secret #3: Remoting Boundaries
When we talk about making distributed and asynchronous programming easy using declarative custom attributes and automatic MSIL to MSIL rewriting, many people quickly conclude that we do not understand the "Fallacies of Distributed Programming". This is rather ironic because whenever we talk about Volta we usually reference this seminal paper and point out the failure of location transparency as found in say DCOM.
As usual when the pendulum swings from one extreme to the other, some parts of the baby get thrown away with the bath water. In this case the rise of web services unfortunately saddles developers with potential accidental complexities with SOAP, WSDL, WS-*, etc., which can in certain scenarios become part of the problem instead of just the solution--even though they do the right thing with respect to exposing location awareness. This is one of the reasons we see a rising interest in RESTful web services.
By definition, we can never have enough abstraction. Abstraction means leaving out unnecessary details, and as long as there are unnecessary details left, we can keep abstracting from them as long as you leave necessary details in place. This is exactly what Volta aims to achieve; let the tools take care of the unnecessary details and the programmers decide on the necessary ones.