Thursday, April 3, 2008

MS Silverlight vs. Adobe Flash/Flex

Hello Everyone,

My name is, Aaron Phillips, and I am the Web Development Director at Moraxis Enterprise, LLC. In trying to determine what I should write about for my first post, I thought to myself, "Why not choose the topic that people have been ramping about?" The Big Question:  Microsoft  Silverlight  or  Adobe Flash /Flex, which is better?

This has been a hot topic for the past several months ever since Microsoft released Silverlight 1.0 and I think I have held my tongue on the matter for long enough.  I have read countless Blogs, Forums, and Articles  stating, "Flash/Flex is better" and "Silverlight is better". If you ask my option... "I don't care! I do both."  That's right, I'm both a Flash and Silverlight developer (for a general example check out our website at: www.moraxis.com). I have been developing in Flash for a while now and started using Silverlight when it was in it's Beta stage. I will say, "I think both excel over the other in certain areas, but should that make me have to choose between them?" I'm not going to limit myself like all those pathetic developers out there that make the decision, "This is the best, I am only going to use this." I love technology too much and want the best of both worlds!

Depending on what the project involves is how I determine what technology use. There are a few general guidelines I go by when I am making the decision: Silverlight or Flash?

1. What does the Client want?

First rule of thumb, give the Client what they want. Show them all the options, make your recommendations, but at the end of the day if the client wants Flash because that is what they are most familiar with, I go with Flash. If the client likes the name "Microsoft" behind the technology being used for their project, I go with Silverlight. A lot of the time I hear, "...they look the same, I don't care." giving me the creative freedom to choose.  Bottom line here is, don't limit yourself to one technology. If you do, you are just giving away potential clients. (probably to me ....hehe)

2. Are there a lot of continuous animations and effects?

Every Flash and Silverlight developer knows (or should know) that the more effects and animations running, the more system resources are used. For me, if I know I am going to have a lot of continuous animations, transparencies, an other effects going on at the same time, just for performance reasons alone, I will go with Silverlight.

Although the actual amount of resources (CPU usage, etc..) that are consumed by both Silverlight and Flash are practically identical, performance is the deciding factor. In order for a Flash movie to run smoothly, you have to give it a decent frame rate. The problem with "Frame Based" animations, is that the faster the frame rate, the more resources consumed. Usually, you are lucky if you get 2/3 the actual frame rate when it is ran from the web and most times not even that. Then take into account that many end users are probably viewing your Flash movie from a 1GHZ / 512MB RAM machine, which results in one extremely slow and choppy experience that no one wants to sit through. That's not to mention that there may be multiple Flash objects on a given page which degrades performance even more at an exponential rate.

With Silverlight being a "Property Base" animation, even though it takes up about the same amount of resources as a "Frame Based" animation, the performance doesn't seem to take as much of a hit on lower end machines. You may have a few stutters here and there, but the speed of  the animation for the most part remains as designed. Users don't care that their system resources are being used, they just don't want to see it.

3. Is it Data Driven?

For data driven applications, I go with Silverlight. I know Flex can utilize and interact with services written in a number of Programming Languages including .NET. However, if I am going to develop a Data Access Layer and Web Service in .NET , I am going to develop the entire application in .NET. What is the point of hooking everything up to a Flash/Flex front end? ...And don't say,  "for the user experience"... I have that covered with Silverlight.

Now obviously I am not getting into all the technical details right now to support my choice for Silverlight when it comes to handling data. That can be broke off into a whole separate post on its own. I'll probably let my business partner, Willis Logwood III, handle that topic. Willis, is our Enterprise Application Director here at Moraxis Enterprise and a brilliant developer. Quite honestly, Willis, is probably the smartest person I know when it comes to development and I know he would love to dive into this topic for you. So, keep an eye out for a post from him on this subject in greater detail.

4. Is this just for the "WOW" factor?

Now up to this point I have sounded like a poster child for Silverlight, but here is where I play the devils advocate. If I am asked to create a Animated Intro, Banner Ad, or just a "flashy" Website. Hands down, my first choice is Flash.  With the Ease, Quality, Speed to produce, and sheer number of effects that I have at my disposal from the start, Flash is my main choice. I actually love developing in Flash. It's fun, easy and doesn't take that much effort to get the desired effects that I want. I love the Visual Design Tools and environment and the Action Script language is comprehensive and easy to pick up.

With Silverlight still in its 1.0 and early 2.0 stages, even the simple effects like Blur, Drop shadow, Bevel, etc... are not all there. That does not mean that they cannot be achieved, but you have to do a few more steps in order to get there. I am sure that Silverlight will have all of these effects eventually and more, but for right now, at the speed and quality of effects that I can create in Flash, Silverlight takes a back seat. We will see if that stays the same as Silverlight matures.

In Conclusion,

We have two great technologies that have a right to be here. Do I know which technology will come out on top in the end? No, but to someone like me that loves technology and is passionate about development, ....does it really matter?

"There are two types of developers: "The Passionate" and "The Pathetic".....which type are you?