Silverlight vs Flex

15,355

Solution 1

I think you should look at Silverlight as a long-term play, just as Microsoft seems to be doing. There's an obvious balance on when to use Silverlight vs. Flash when you're concerned about reach and install base, but here are some reasons Silverlight is a good direction to move in:

  1. Second mover advantage - Just as Microsoft built a "better Java" with .NET, they're able to look at how you'd design a RIA plugin from scratch, today. They have the advantage of knowing how people use the web today, something the inventors of Flash could never have accurately guessed. Flash can add features, but they can't realistically chuck the platform and start over.

  2. Developer familiarity - While Silverlight is a new model, it's not entirely unfamiliar to developers. They'll "get" the way Silverlight works a lot more quickly than they'll understand firing up a new development environment with a new scripting language and new event paradigms.

  3. Being rid of the timeline model in Flash - Flash was originally built for keyframe based animations, and while there are ways to abstract this away, it's at the core of how Flash works. Silverlight ditches that for an application-centric model.

  4. ScottGu - ScottGu is fired up about Silverlight. Nuff said.

  5. Cool new features - While Silverlight still has some catching up to do with Flash on some obvious features (like webcam / mic integration, or 3d / graphics acceleration), there are some slick new technologies built in to Silverlight - Deep Zoom is one example. I'm seeing more "revolutionary" technologies on the Silverlight side, while Flash seems to be in maintenance mode at this point.

Solution 2

There's two questions here: Silverlight vs. Flash as platform and Silverlight vs. Flex as RIA framework.

The first question depends on your timeframe. Flash Player has over 95% reach, Silverlight has no way near that. However, Silverlight may get there, it is after all backed by Microsoft. If you aim to launch a site next week and want a huge audience, Silverlight is not an option. If you aim to launch a really cool application that everyone would want to use it's a bit different, if your app is good enough your target audience may install Silverlight just to be able to run it.

As for the second question its a matter of how easy it is to develop applications in Silverlight. Flex isn't just a set of widgets, it's a very big framework that does a lot of thing that ease the work of the developer. You could write the same applications using only the core Flash API, but it would be very much more work. Depending on what's available in Silverlight, this should be an important factor when deciding. If you can cut development time, is having two platforms worth it?

Solution 3

I think Silverlight is most advantageous for companies that have .NET developers but noone with designer experience.

Skill sets will be easier to find as far as finding C# or VB developers vs finding ActionScript guru's. However there is the trade off:

Design experience is an investment not only in Designers with artistic skill, but also in the knowledge and tools provided by Adobe. You can nearly guarantee that a professional designer uses a mac and has experience with Adobe tools.

Right now the Silverlight designer tools are half baked and can be a headache. For instance Blend errors when trying to render any xaml containing an IValueConverter, this is problematic. I have no idea what the Adobe developer experience is, I'm sure it is as hairy.

So at this stage of the game it comes down to human resources:

If you have .NET experience and little invested in Design skills go Silverlight. Programming skills/tools will be transferable. If you have Design experience and skill set go with Flex. Designer skills/tools will be transferable.

Either way both client platforms require communication with services to get data, so you will always leverage your existing programing expertise on the back end.

Paraphrased Jon's opinion from a different point of view:

I think you should look at Flex as a long-term play, just as Adobe seems to be doing. There's an obvious balance on when to use Silverlight vs. Flex when you're concerned about reach and install base, but here are more reasons Flex is a good direction to move in:

  1. Second mover advantage - Just as Adobe built a "better Java Applet" with Flash, they're able to look at how you'd design a runtime from scratch, today. They have the advantage of knowing how people use the web today, something the inventors of existing client platforms could never have accurately guessed. .NET can add features, but they can't realistically chuck the platform and start over.

  2. Designer familiarity - While Flex/AIR is a new programing model, it's not entirely unfamiliar to designers. They'll "get" the way Flex works a lot more quickly than they'll understand firing up a new design environment with new feature poor tools and new animation paradigms.

  3. Being rid of the RGB color model in Silverlight- .NET was originally built for windows and it is at the core of how it works. Flex ditched a long time ago for an design-centric model.

  4. All your tools run on your mac. Nuff said.

  5. Cool features - Silverlight still has some catching up to do with Flash on some obvious features (like webcam / mic integration, or 3d / graphics acceleration).

Solution 4

We are doing both silverlight and flex, and here are developer's point of view for both.

Pros of Silverlight:

  1. Power of C#, Code Snippets, Reusing existing C# Algorithm Implementations
  2. Power of other languages too, Generics and Linq etc
  3. Power of Native execution of CLR instead of Flash's Action Script Interpretator
  4. One Integrated Visual Studio for All Development
  5. Expression Blend is really cool and more advanced editor then Flex Builder
  6. XAML is Search Engine Friendly
  7. Pretty nice state transitions and easy to define them
  8. Threading and Asynchronous Tasks
  9. Accessibility, no one knows that Microsoft always made the best accessiility features on all of its products, they always worked well with disabled people, comparing the browsers only IE supports full accessibility and Safari/firefox etc are no where closer.

Cons of Silverlight:

  1. Strictly Microsoft Platform, I know lot of people will argue but with current scenario, half of Intel Mac guys cant get silverlight 3.0 working, all PPC Mac guys cant use Silverlight 2.0 onwards, and No silverlight for Linux.
  2. There is mono, but not officially supported by Microsoft, it will always lag behind reverse engineering .NET and porting it on other platform, its not out of the box yet.
  3. Majority of components/controls are "Sealed" so its difficult to extend them and override to make new components easily.
  4. Bad CustomControl/UserControl architecture. E.g. you cant have XAML's root as ComboBox or any other control and let it have both design as well as code, you can create custom control but they are way too complex
  5. Binding requires component naming and does not support instance expressions like flex does, though two way binding is good in silverlight but you have to write long codes for multiple bindings for one math expression
e.g.
// this is possible in flex..
// but not in silverlight
<mx:TextBox id="firstName"/>
<mx:TextBox id="lastName"/>

// display full name..
<mx:Label text="{firstName.text} {lastName.text}"/>

Pros of Flex:

  1. Truely platform independent, supported on various hardware and operating systems and truely working everywhere great.
  2. Open Source makes it really easy to understand and extend the functionality.
  3. Every control/component can be extended and there are less restrictions overriding default behaviour.
  4. The most easy way to create new components, you can have mxml derive from any control and extend them with extensive binding
  5. Flex contains lots of controls and you dont need any third party library

Cons of Flex:

  1. Slow execution for iterative executions, no threads !! no async tasks !!
  2. Based on point 1, no great animation or graphics possible
  3. No generics, No other languages, No linq..
  4. Number class has a bug, cant store full 64 bit long value
  5. Eclipse is bad to design something great UI

Conclusion

  1. We use flex for data applications, those are simple form processing applications
  2. Silverlight for extremely rich graphics and animation

Solution 5

The problem with Silverlight, is that there's still a lot of people who don't have it installed. Also, I"m not sure how well your existing .Net developers will be able to leverage their existing skills if they are only familiar with more traditional server-side .Net coding.

What are your reasons for pushing Silverlight over Flex? If you have to ask the SOFlow community for reasons, it seems odd that you would be so willing to push it.

Share:
15,355
Kevin Griffin
Author by

Kevin Griffin

.NET Developer, ASPInsider, Leader of the Hampton Roads .NET Users Group

Updated on June 01, 2022

Comments

  • Kevin Griffin
    Kevin Griffin about 2 years

    My company develops several types of applications. A lot of our business comes from doing multimedia-type apps, typically done in Flash. However, now that side of the house is starting to migrate towards doing Flex development.

    Most of our other development is done using .NET. I'm trying to make a push towards doing Silverlight development instead, since it would take better advantage of the .NET developers on staff. I prefer the Silverlight platform over the Flex platform for the simple fact that Silverlight is all .NET code. We have more .NET developers on staff than Flash/Flex developers, and most of our Flash/Flex developers are graphic artists (not real programmers). Only reason they push towards Flex right now is because it seems like the logical step from Flash.

    I've done development using both, and I honestly believe Silverlight is easier to work with. But I'm trying to convince people who are only Flash developers.

    So here's my question: If I'm going to go into a meeting to praise Silverlight, why would a company want to go with Silverlight instead of Flex? Other than the obvious "not everyone has Silverlight", what are the pros and cons for each?

  • Andrei Rînea
    Andrei Rînea almost 16 years
    Just wait for MS to push it onto the automatic updates and 99% penetration will be achieved.
  • analytik
    analytik over 15 years
    Yes, of course. Exactly the same way 99% of IE users use IE7, and no one uses IE6, because IE7 was pushed through automatic updates. Yes.
  • analytik
    analytik over 15 years
    If you work just in Flex, you as well might have no clue that there ever was any timeline at all. That is a non-issue.
  • Craig
    Craig over 15 years
    The silverlight install is pretty easy for users that don't have it.
  • Alejadro Xalabarder
    Alejadro Xalabarder over 15 years
    1. a better Java, just not a cross-platform (mono rocks though) Adobe did chuck the player away and start again with AVM2 and AS3 2. agree 3. Timeline is optional now (use sprite instead of movieclip) 5. Flash absolutely does NOT have 3D acceleration, so that's a tie. deep zoom is cool but pointless
  • SkunkSpinner
    SkunkSpinner over 15 years
    Actually, Jon, in all due respect, you're comparing Silverlight to Flash, not Flex, which is a typical point of confusion by Silverlight proponents. I've written an enterprise-level application in Flex (which compiled to SWF), but wouldn't even know where to begin to write a Flash app.
  • jcollum
    jcollum over 15 years
    I agree with Craig. Easier than Flash to install.
  • Slapout
    Slapout over 15 years
    You're forgetting Flash comes bundled with most browsers already.
  • jcollum
    jcollum over 15 years
    "the pain of Ajax and JavaScript" <-- has nothing to do with the current implementation of Silverlight, it uses no JS
  • jcollum
    jcollum over 15 years
    "100 layers(!) in the base app (and another 100+ in some of the user controls), and about 40-50 storyboards": man it sounds like you need to work on breaking things out into more user controls. Surely you aren't working on all of those things within the same few minutes?
  • jcollum
    jcollum over 15 years
    My recent install of FF3 required me to install Flash separately. And the Silverlight install was easier.
  • jcollum
    jcollum over 15 years
    Go watch the videos of QuakeLight and tell me that Silverlight has some catching up to do in graphics. Also: "All your tools run on your mac. Nuff said." Apparently macs are perfect.
  • Mark
    Mark over 15 years
    I see more people favoring Flex than Silverlight, SO might be more dominated by .Net people but its certainly not biased
  • Mark
    Mark over 15 years
    I have to say C# developers feel good about Flex too, since the chief designer for Flex was in .Net team originally
  • Mark
    Mark over 15 years
    Flash is very different than Flex, (and actually there is a framerate and those things inn Flex too but they are not used and its a bad practice) Flex is also much faster than Flash, I would suggest you take a look at the C++ interpreter built with Flex. Silverlight player is not available that much
  • Joel Mueller
    Joel Mueller over 15 years
    So Microsoft devs are automatically not honest? Is everyone who disagrees with you a liar?
  • Alejadro Xalabarder
    Alejadro Xalabarder over 15 years
    In my experience, developers can pick up new programming languages faster than designers can pick up new design software. They're even more stuck in their ways than us!
  • Hrundik
    Hrundik about 15 years
    @jcollum: actually quake was also ported to flash (youtube.com/watch?v=6TKGNS1N1yo) using Alchemy (labs.adobe.com/technologies/alchemy).
  • Hrundik
    Hrundik about 15 years
    Agreed on AIR (may be very important), but no 3d support (yet).
  • Alex
    Alex almost 15 years
    I hear this theory often and I have to take issue with it. Do you suggest I develop my first person shooter in Javascript and CSS so that all the teenagers out there running Plan 9 can play it? Enterprise LOB applications can particularly benefit from the deployment and maintenance advantages offered by RIAs. Developing rich content (like a 3d engine for instance) with HTML/CSS/JS is extremely difficult and suffers from square peg/round hole syndrome. RIAs have their place, and I look forward to more competition in this arena.
  • ȜAmer Elsayed
    ȜAmer Elsayed almost 15 years
    For your first person shooter JS and HTML is probably not the right technology - today - to use. Though the thing you say about deployment and maintenance in regards to enterprise LOBs requires commenting. To maintain and deploy a silverlight thing is far more advanced and difficult and full of hassle then it is to deploy a "JS and HTML thing"... (obviously!) And Silverlight is probably marginally less hassle to deploy (and maintain) than a desktop thing...
  • Alex
    Alex almost 15 years
    Regarding enterprise apps, HMTL is not an option for the field I work in (resources). The content and functionality required is just too dynamic. For operations with a Microsoft SOE, Winforms was the best option. WPF makes things easier with click-once for deployment, but you still have to deal with the endless bureaucracy of getting desktop apps approved for an SOE. To have something running in the browser under .NET code that does not require the normal haggling with the IT crowd is a joy.
  • ȜAmer Elsayed
    ȜAmer Elsayed almost 15 years
    @Alex - It would be interesting to see why you think your domain problems are too complex to be solved with the W3C platform (HTML, JS, CSS, etc) - Google does maps through the W3C platform. Sure some extreme applications (mostly games I suspect) need more power then the W3C platform can supply, but for those kind of things I suspect that something like Qt or NativeClient wold be better fits, if not for anything else then the fact of that they're Open Source. But I might be wrong, maybe Silverlight is just the right thing for you, but then you would belong to a VERY small group of devs...
  • Alex
    Alex almost 15 years
    Visualisation engines are the obvious example. And yes, Google Apps and Google Docs look and feel great. Unfortunetely finding that kind of talent in W3C is not easy. Why do you think Flash became so popular in the first place? IMHO it allowed developers to quickly make highly dynamic content without being W3C ninjas. I also cringe at the thought of writing complex applications within Javascript...its not really what it was designed for. If open alternative like NativeClient catch on that will be great, but today I'd have zero chance of getting that approved within my corporate SOE.
  • Syed Saad
    Syed Saad almost 15 years
    Notice that when most users buy a computer, it already as Flash installed. And unfortunately Andrei Rinea as a point, when Microsoft wants the users to install something they just put it on the Recommended updates catalog....
  • Syed Saad
    Syed Saad almost 15 years
    We most also notice that Air was release in the early 2008, its very young, of course that with time it will get even better. I can't give a "no side opinion" because i just don't like Microsoft Business/Marketing methods. But if it wasn't for then we wouldn't be in the current state of technology as we are.
  • Syed Saad
    Syed Saad almost 15 years
    And you can also use Eclipse with the Flex Development plugin which does the same as Adobe Flex.
  • Keith
    Keith almost 15 years
    Flex has Air, Silverlight has WPF. I don't think there's enough difference for this to be an argument one way or the other.
  • Joel Hooks
    Joel Hooks almost 15 years
    what does 'design skills' have to do with writing a proper flex application? It is more than capable of making stock apps that looked like a developer 'designed' them.
  • Jason Miesionczek
    Jason Miesionczek almost 15 years
    Silverlight 3 comes with the "out of browser" feature where your silverlight app can be installed to the desktop just like an AIR app. There are APIs for detecting when the app is running in the browser or not, when there is an internet connection present, and even an API for updating the app automatically.
  • Akash Kava
    Akash Kava almost 15 years
    @Thomas, JS should be destroyed, its no longer needed after flash and silverlight, HTML is past, and its going to end soon like the Assembly Language, Procedureal Languages etc, people invent technologies to reduce lines of code => man hours for development. Indeed your answer does not even match the question, requester has asked Silverlight Vs Flex, the answer cant be in the form of "stop using both of them"
  • Akash Kava
    Akash Kava almost 15 years
    "They don't work well for disabled people, etc, etc, etc. List goes on into infinity..." this is wrong, one thing Microsoft always did was they always made good accessibility in all of their products, the UIAutomation Peer technology is far better then any other available in the market.
  • Christian Nunciato
    Christian Nunciato over 14 years
    In point of fact, Flash does not come bundled with IE, FF or Chrome.
  • adamcodes
    adamcodes over 14 years
    Yeah, but if kevgriff goes into a meeting and says Scott Guthrie praises Silverlight, his coworkers are gonna say "Who?".
  • Aleks Ben Maza
    Aleks Ben Maza over 14 years
    "You can nearly guarantee that a professional designer uses a mac and has experience with Adobe tools." If you've used Flex Builder at all, you'd know that "previous experience with Adobe tools" is not a benefit. It's built on top of Eclipse, and will be foreign to anyone without previous programming IDE familiarity.
  • Nick Craver
    Nick Craver about 14 years
    @Christian - Update to this, Flash is now bundled in chrome in chrome in the dev channel.
  • Michal Sznajder
    Michal Sznajder almost 14 years
    @ilk - I started working at Microsoft in December 2009. I posted this answer in August 2008. I took a job at Microsoft because I like their developer products, not the reverse. Nuff said.
  • Dave
    Dave over 13 years
    We do Flex development in Eclipse with Subversion and have found it to be stable and productive. To say Flex is a pain to source control makes no sense to me.
  • Keith
    Keith over 13 years
    @HDave - we found that the Flex project regularly needed rebuilding after checking out (initially with Vault but later with SVN too) for the first time by a new user. If they did rebuild it when they checked in the original user got a corrupt project instead. We also regularly lost the Flex Charts licence so that the integrated build ended up with demo watermarks across the charts and features disabled. Maybe Eclipse is better now but when we used it back in 2008 it tended to crash or otherwise fail all the time.
  • Dave
    Dave over 13 years
    My guess is that time has been a friend to Flex/Eclipse/Subversion. I've only been using it for the past 15 months, but have not had these experiences. I've been using Flash Builder 4, which I am not a fan of, but at least checkout/commits work. I also use Maven/Flexmojos - but that took some serious time to figure out.
  • Ian Ringrose
    Ian Ringrose about 13 years
    The fact your developer could already program in JavaScript may have a lot to do with them getting up to spead in Flex fast.
  • Brian Genisio
    Brian Genisio over 12 years
    Just a note: You CAN use Linq in Flex via www.actionlinq.org :)
  • vijiboy
    vijiboy almost 12 years
    Incorrect, Silverlight also supports Mac and Linux via Moonlight
  • Tarun
    Tarun over 10 years
    Hello vijiboy, Moonlight is an open source project (its only supported by community). With Moonlight, Silverlight may partially work on Mac and Linux.
  • vijiboy
    vijiboy over 10 years
    Moonlight was indirectly supported by MS as Wikipedia says en.wikipedia.org/wiki/Moonlight_(runtime)#Microsoft_support. anyways both have stopped the road map now.
  • Tarun
    Tarun almost 7 years
    Below is the list of supported browsers & OS for silverlight microsoft.com/getsilverlight/locale/en-us/html/…. Moonlight
  • Tarun
    Tarun almost 7 years
    Info about Moonlight project (which is not currently under active development is here) mono-project.com/docs/web/moonlight
  • Tarun
    Tarun almost 7 years
    Even Flex is now only supported by community, HTML5 standards are currently taking over the web platform across all devices.