Now that Silverlight is being talked about, people seem to be comparing Apollo and Silverlight in the same posts. I think this stems from the fact that both are still alpha/beta and that the two technologies "cross the streams" into the other companies territory. For that they are significant, but still not in competition. To help clear things up, I've tried to create a guide for how and when you would want to use different RIA technologies from Adobe and Microsoft. Hopefully this clears up a bit of confusion about which technologies are "competing" and which aren't.
I want to build rich desktop applications.
Adobe's Apollo lets you build cross-platform desktop applications using the exact same code base for all of your deployments. It uses a combination of Flash and Ajax so that you can take your web skills and deploy desktop apps. However it doesn't tie as closely to the operating system as other technologies. You can't access devices from Apollo and right now the plan is not to allow execution of native code. Think of Apollo as a way to deploy applications that require a bigger sandbox than the browser (things like file system access and native windowing), but not full operating system features.
To build desktop applications for Windows, you use the next version of .NET, Windows Presentation Foundation (WPF). You can do pretty much anything with WPF that you can do with other "desktop" technologies, but it will only run on Windows. It offers hardware acceleration, 3D support and the full Common Language Runtime (CLR) so .NET developers can dive in and build desktop applications.
I want to build rich browser-based applications.
Adobe's Flash Player is the method of choice to build browser applications. It runs as a plugin in the browser and compiles down to a binary 'SWF' file that can be embedded in HTML pages. Flex 2 is a framework for the Flash Player which makes building Flash applications more developer friendly. It makes it easy to do things like binding and custom components. With Flash Player 9, speed was much improved so that rich, advanced applications can be delivered cross-platform (Windows, Mac and Linux) in the browser.
I want to make my web application more interactive.
I want to produce and consume video on the web.
Consuming Flash video is done with the Flash Player, which nearly everyone has. To produce Flash video, you can encode it with the Flash IDE, or stream it with Flash Media Server. You can also use On2 Flix to encode other file formats into Flash video.
Silverlight's big story last week was the video support; it uses the VC-1 codec which means you can get Windows media running as seamlessly as Flash video for Windows and Mac. To encode files for Silverlight you can use Microsoft's Expression Media Encoder or third party tools. To stream it, you can use software that ships with Windows Server 2003.
I want tools that allow me to create rich experiences.
Right now, nothing beats Creative Suite 3 from Adobe. With the integration between Macromedia's tools and Adobe's, the suite is top notch and it's something designers and creative types already know and love.
Microsoft came out with Expression Studio, which isn't quite a competitor to Creative Suite, but there are overlaps. Expression Web competes with Dreamweaver, and Expression Design kind of competes with Illustrator. Expression Blend is kind of a hybrid of Flash and Fireworks, but is billed specifically as an "Interactive Designer" and Adobe doesn't have a product that directly competes.
Hopefully that clears it up a bit, and shows how you can use RIA technologies from Microsoft and Adobe for a specific task depending on what you need to do and who you need to reach. If you think I missed anything, or have some thoughts, let me know.