<p>I've been experimenting with <a href="http://www.adobe.com/products/flex/" rel="nofollow noreferrer">Adobe Flex</a> recently. Being a long-time server-side web app developer, I'm faced with difficulties that I last experienced when I dabbled in Java Swing development a long time ago. It mainly revolves around the <strong>flow of control between my code and the framework's code</strong>. Most things are asynchronous as to not freeze the UI. </p>

<p>So, I'm looking for all the seasoned developers out there who have seen it all to put into words the <strong>shifts in thinking</strong> required to make the transition from traditional web apps to <a href="http://en.wikipedia.org/wiki/Rich_Internet_application" rel="nofollow noreferrer">RIA</a>s. </p>

<p><em>Update:</em> Moved the distracting parts to <a href="https://stackoverflow.com/questions/178663/are-server-assisted-mvc-frameworks-peaking">another question</a>.</p>

There's two models I'm seeing in the market right now:
Blended UI. The server is still involved in the UI construction effort, but a lot of it is offloaded to javascript. This is how a lot of the javascript toolkits work (except dojo, extjs, ...).
Separated concerns. The server is treated as a data storage and synchronization method only. The app runs entirely client-side, possibly even with local storage. This is how flex works.
I think we're going to be migrating towards the second model, because it means that you don't have to track UI state on the server, which dramatically simplifies the architecture. I've been toying with ExtJS and Flex, and the development experience is a lot like building a desktop app, only without the fancy drag-and-drop IDE's. It's hard to think of large differences between a three-tier desktop app and a web app in this fashion.
So my advice would be: stop thinking you're building web apps, always put into doubt whether something belongs on the server, because in the new model it often won't. Also, use gears or the browser cache effectively, because if your app is client-side, downloading all that code every time will be too slow.