In a question from the audience, I was asked to describe the differences between various technologies AJAX, Flex and Silverlight.
To start, AJAX is not a new concept, some of the elements such as the XML HTTP were available in very early versions of browsers. That said, you needed quite a bit of skill to and effort to implement. Specification and creation of JSON and WSDL have helped to mature this technology and actually make it not "rocket" science to implement.
AJAX vs RIA
Comparing these is quite difficult and full of debates, but here are a few items of note:
- does not require any browser side plug-ins to work
- Cross browser capable
- Server-platform neutral
- ASP.NET provides a fully integrated developer experience
- provides enhanced user experience.
- cross browser behavior is complex, new features and browser caps change with every version.
- very limited local storage (using cookie only)
- no pixel level support
- other IDE behaviors is not
- Limited mobile support
- Rich and sophisticated user interface possibilities
- local and disconnected state
- network API (other than HTTP)
- Extensive development environment and debugging
- rich graphics still require work from designers
- requires an browser plug-in
- Network download is sometimes large
With all things considered, there are pros and cons how each technology can applied. As such, it is important to understand the business requirement and strategy when making these choices.
I my humble opinion, RIA represents the next evolutionary step of user interfaces for the web, mobile and other alternative user interface technologies to desktop.
Flex/Flash vs Silverlight or RIA's
Flex and Silverlight are a new generation of technologies that we have began to commonly refer to as Rich Internet Applications or RIA technologies.
Today there are a few choices when you develop RIA applications. You can use Flex to develop Flash based RIA's, or Visual Studio 2008 can be used to develop Silverlight applications.
In an effort to not say what have already been said, a few months ago as I was doing some evening reading, I have stumbled upon a very interesting (although lengthy post) which compares the two technologies.
This is a fantastic post, in part because it provides great detail regarding both technologies but also because it is being responded to by evangelists from from Adobe Flex team and Microsoft Silverlight. The initial question as you can see came from a regular developer, but the conversation quickly turned technical and non-hostile from both specialists covering the technology.
An absolute great read....
I am a huge proponent of app lifecycle, developer capability and platform maturity. That said, when you compare technologies to be used on the project, you need to take into consideration how many times will the developer be switching between IDE's to accomplish a maintenance task.
Switching between different applications for the development causes a shift in context and a loss of focus... which ultimately translates into loss of productivity. Usage of multiple development environments also causes fragmentation in the upgrade and maintenance cycles.
Microsoft has the made the winning decision here by allowing the developer to concentrate on a single IDE with a single technology (.NET) that can be used both in the client and on the server. This is not the case for Flash/Flex combo.
I3 = Inspire, Innovate, Implement.