I’ve been experimenting with Adobe Flex 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 flow of control between my code and the framework’s code. Most things are asynchronous as to not freeze the UI.
So, I’m looking for all the seasoned developers out there who have seen it all to put into words the shifts in thinking required to make the transition from traditional web apps to RIAs.
Update: Moved the distracting parts to another question.
There’s two models I’m seeing in the market right now:
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.