Microsoft's new Volta toolset allows developers to develop their applications using standard OOP techniques and then use "declarative tier-splitting" to specify which functions should run on the client and which on the server. Erik Meijer says:
...Volta starts with a client-side perspective. That is, once developers are satisfied with an application's functionality and fully understand the internal object interactions, they "decorate" the code with declarative attributes, or annotations, to indicate the parts of the application that should run on other tiers.... Moreover, Volta allows developers to delay irreversible decisions until the last responsible moment, greatly increasing the agility of development in intermediate phases where change is often rapid. Since developers initially create easy-to-manage, single-tier client applications, and then incrementally distribute parts to other tiers through a "refactoring" technique they are already familiar with, they can apply familiar skills to new problems ? reducing development cost and risk.
I've not explored Volta, but...
This sounds like a bad idea to me. You can't refactor away the difference between an in-memory method call and an Internet message: one happens in nanoseconds and the other in milliseconds.
Meijer says "Volta dramatically reduces the amount of 'new stuff' developers must learn...." which is all well and good, but "Making lots of function calls over the Internet is a bad idea for performance, scalability, and maintenance" doesn't qualify as 'new stuff' and I think pretending otherwise is wrong-headed.