Friday, 22 May 2009

Flex 3 versus Silverlight 3 in Enterprise development.

While there are an abundance of articles comparing features of Flex and Silverlight, I’ve not seen anything that compares both from the perspective of enterprise development. A lot of people who are pro Flex cite the install base, in the corporate environment this need not be a sticking point and is certainly only one of the factors that should make up your decision.

Having previously developed enterprise software on the .NET platform virtually since its inception, I’ve recently taken a break and spent a few months working on a very large Flex application.

Rich Internet Applications (RIAs) are coming of age. Abobe have made their Flash offering more developer centric with Flex. Microsoft has more recently entered the market with Silverlight.

In my view Adobe has a strong design background with a portfolio of great looking applications. Microsoft and the .NET platform have been the leaders for developing business applications, inherently making Silverlight a compelling option where business functionality is more important than look and feel.

What I aim to show with this article, through a comparison of the two technologies, is that I believe that the cost of delivering complex business functionality with Silverlight is likely to be significantly less than doing so with Flex.

The languages - C# vs. Actionscript

C# is a fully featured object oriented programming language that that is the pack leader when it comes to building business software. Actionscript was initially a scripting language for Flash player which has been redesigned in Actionscript 3. As an object oriented language it lacks many features Java or .NET developers will take for granted. Some of these differences are noted here:

C#
· Decimal data type
· Threading support
· Generics
· Overloading method signatures
· Operator overloading
· Structs and Enums
· Private constructors
· Abstract keywords
· Lambdas and Linq
· Public getters/private setters
· Automatic Properties
· Object Initializers
· Implicit variable typing

Actionscript:
· Dynamic classes and types
· Events in Actionscript are wired up with Strings, which can cause refactoring issues
· Internal access modifier seems slightly pointless vs. c# implementation

These missing features invariably result in impure and unnecessarily complex OO code. Casting is frequently necessary, such as when accessing collections. While it’s still technically possible to make Actionscript do what you need it to, the resultant code is inevitably hackier, less type-safe and less maintainable.

The fact that Flex is missing a decimal datatype has been a particular issue while working on finance applications. Floating point maths is frequently not accurate enough for financial calculation as can be seen here. There is a decimal implementation FXComps has produced in Flex, but when performance testing it, I found decimal divide was 3,000 times slower than float divide. Decimal multiply was 650 times slower than float multiply. Clearly decimal arithmetic if slower than floating point arithmetic in C# too, but not by these orders of magnitude as you can see here. This point alone should be enough for people who are considering creating a financial application to have serious doubts as to the suitability of Flex.

As a result of these and other shortcomings the Actionscript compiler is less effective at diagnosing issues at compile time. Compilation is slower than the C# compiler (Flex takes around 2 minutes per 100,000 lines of code). Similarly Actionscript executes more slowly than C#.

Beyond the language basics, C# has the .NET framework, a lot of which is accessible in Silverlight. In this area Flex/Actionscript has a lot of catching up to do.

MXML vs. XAML

MXML and XAML try to accomplish similar things. Both are markup languages for defining UI layout and animations. MXML is relatively simple and intuitive, hence most experienced developers can learn MXML quickly. On the flipside XAML is less rigid, more powerful but also
harder to learn.

Silverlight does more to encourage separation of layout and code, with partial classes offering a cleaner code-behind model. Flex allows script blocks to be placed within an MXML file, which can make UI layout files become bloated with presentation model code.

Framework components

Out of the box, Flex still has a more comprehensive component set. If you require any complex functionality with many of these components though, quality is not always consistent.

Ask any Flex developer who’d worked with the internals of the Advanced DataGrid what they think (e.g. www.insideria.com/2009/03/custom-edit-renderers-for-the.html). I’ve seen people have to manually control focus using tab out events, and code to deal with scrollbar clicks in combo boxes in grids. It seems that as soon as the required functionality gets a little complex the amount of heavy lifting required in Flex grows exponentially.

Microsoft has done a good job of catching up to Flex in the Silverlight 3 feature set. However there are a few items which Silverlight lacks such as video and audio recording, and printing.

3rd party components

This is one area Microsoft does particularly well. Take a look at the current offerings from Infragistics, Syncfusion and Telerik. With these offerings you can quickly create very powerful UI’s without needing to write almost any code.

Flex has some commercial and open source offerings here also, for example ILOG Elixir from IBM. But there have been companies developing components for Microsoft for years. In Flex the offering more limited.

Patterns and Practices, Frameworks and IoC

Silverlight has a number of frameworks that can be more or less used off the shelf. e.g., Composite WPF, CLSA.net, Spring.net. Having a tried and tested off the shelf framework can greatly enhance developer productivity, not only because it establishes a repeatable pattern for writing consistent and maintainable code, but it also means a lot of the hardest code you’d have to write on a project has been written for you.

Likewise .net has several great IoC frameworks which can greatly reduce code coupling; one of my favourites is Autofac. While Actionscript is making inroads in this area, it’s significantly behind C#. Spicefactory’s Parsley is a good one, but it requires big configuration files like Spring that I’m not a huge fan of. Adobe does have LifeCycle ES which offers a lot, although sometimes with restrictions that can be a sticking point.

IDE/refactoring tools

On a large project, having a powerful and full featured IDE can save huge amounts of developer time, and therefore money. Conversely, having an underpowered, unstable and limited IDE can mean days or weeks in wasted developer time over the course of a project.

This is one area where Silverlight has an undeniable lead. Visual Studio 2008 is an awesome IDE, particularly when combined with refactoring tools like Resharper.

FlexBuilder and Eclipse however have some major shortfalls, including:

· Virtually no refactoring support. In a large codebase, try hitting Find Usages, or even Rename and you’ll have to kill your IDE and restart unless you want to wait 10 minutes to reach the out of memory error.
· The debugger. Flex Builder 3 doesn’t have basic necessities such as Conditional Breakpoints, and can only watch simple expressions. Conditional Breakpoints are coming in Flex Builder 4, but this is indicative of the gap between VS and FB –VS2010 will introduce next generation features such as Historical Debugging, while FB4 finally adds a feature that should be in any v1.0 IDE.
· No integrated Unit Test runner, as compared with MS Test or Resharper offerings.

Unit testing/mocking

The Flex unit testing capability is satisfactory. Personally I feel that projects can get too bogged down with their choice of tools in this area. However C# does have better testing options available and a much wider choice of mocking libraries.

Unit testing in C# with Visual Studio is made more efficient by integrated tools such as MS Test or Resharper – just select the test methods or classes you want to run and the results are delivered within the IDE. If a test fails, click on it and it’ll open the failing test method for you. If you need to test just a small portion of your Flex app, you need to create a separate test runner class, specify the test cases you’re targeting, recompile, and then run. If the tests fail in Flex Unit, you then have to make note of the failing tests and manually find them in the IDE.

You can get the job done in Flex, but it is just harder and takes longer.

Profiling

The Flexbuilder profiling tool is very poor and there are no 3rd party alternatives. Performance statistics are taken from application start up and not from between two snapshots. Therefore if you’re trying to profile a small feature, such as what happens after a button click, you may have to wade through a minute of start code to find your button click.

As far as I know, there is currently no profiler for Silverlight, however it’s fairly simple to convert your code to a WPF app and from there you can use a number of the capable profiling tools, my favourite is dotTrace. Aqtime and DevPartner are other good options amongst a host of others.

Code samples/documentation

99% or more of what you want to do in C# has been done before. 90% or more of it has been written about on the web. The .NET developer community is thriving. If you’re stuck it generally takes five minutes of googling, or a quick look at MSDN to find your answer. On the flipside there is far less in this area in Flex and the Flex Livedocs are far less complete than MSDN.

Experience of developers

In general, Flash/Flex developers have years of experience of making good looking applications, but they don’t always write solid maintainable code. This is understandable, given the lack of enterprise Flex projects there have been to this point.

Similarly, there are a wealth of C# developers with years of experience in writing enterprise software, but it could certainly be argued that the majority of their user interfaces are poor.

Naturally there are exceptions to both cases; I’ve met some excellent Flex developers.

Install Base

Flash Player is installed on around 99% of PC’s. If you’re targeting as many users as possible with a light weight application Flex/Flash is an obvious choice.

For an enterprise application this argument may not carry much weight. Generally speaking, the client will have bought into the value of your application. Asking them to install the Silverlight plugin shouldn’t be a big issue. A lot of corporations are now including it as part of their standard desktop install.

Summary

Ultimately for me the choice comes down to what you’re trying to achieve. At this stage if looks are your only concern, then Flex probably has an edge. However if you’re looking to build complex business functionality and are concerned with value for money then I think Silverlight offers a better value proposition. This is primarily due to the resultant code base that you would have with a Silverlight project; simpler, higher level, more maintainable and robust code. As complexity increases, so does the importance of having a well structured codebase. Without this the number of bugs and regressions can grow exponentially, in turn driving up development cost.

I’m biased, I’ve developed with C# for years and I’ve enjoyed doing so. Coming over to Flex I’ve felt like I’ve been working with an arm tied behind my back. It’s frustrating to be in an environment delivering a small fraction of what you know you could be achieving. Having said that, this particular Flex application is the best looking application I’ve ever seen!

Many thanks to Marcus Whitworth, a colleague of mine, who wrote this article with me.

45 comments:

  1. Good post.

    Flex is ultimately a very difficult and buggy tool to work with. It does cater well to web developers, but for business logic, its pretty bad.

    One additional (and HUGE) thing about C#/Silverlight is that you can share code between your client and server. Thats a gigantic productivity boost.

    The biggest edge Flex has is its install base, clearly not an issue in the enterprise world, but it is in the consumer world. Because of this, and the general hatred of Microsoft in Silicon Valley, Flex will probably maintain an edge over Silverlight for several years to come.

    ReplyDelete
  2. This is it. I'm not going to try to add to it or embellish what you two have written. You hit the nail on the head.

    I've been watching the debate on Twitter. Silverlight. Flash. But I've not seen anyone state it as clearly as you have here.

    Thanks.

    ReplyDelete
  3. Note that you can also write Silverlight in Python, Ruby, and other dynamic languages supported in DLR. Thus, we can still achieve the benefit of being dynamic.

    ReplyDelete
  4. Good point. I'm thinking of using silverlight 3 as our enterprise application since it support many useful feature now.

    ReplyDelete
  5. Great post Alex. Very informative and quite unbiased indeed.

    I haven't used Silverlight yet, having only worked with Flex for RIAs to date. Flex's suitability for large-scale enterprise development has however always niggled at the back of my mind.

    When you talk about Flex versus Silverlight, I assume you mean an application written entirely in Flex versus an application with a Silverlight front end and a .NET server-side. I wonder then how your points differ with respect to a Flex front end coupled with a Java server-side via say BlazeDS.

    Whilst I appreciate you can't talk about every combination of language or technology, wouldn't the direct alternative to a Silverlight enterprise application be a Java server-side with a Flex UI?

    ReplyDelete
  6. I'm talking purely from a client perspective here. Silverlight can have a Java or .NET serverside. Flex will typically have Java server side. Both can use Lightstreamer for pub/sub type data requirements.

    ReplyDelete
  7. Hi Friend,! Congratulations for this nice looking blog. In this post everything about Web Development. I am also interested in latest news, Great idea you know about company background. Increasing your web traffic and page views Add, add your website in www.directory.itsolusenz.com/

    ReplyDelete
  8. Very informative post, thanks. I am currently trying to make the same choice. There is also JavaFX, but that appears to be a disaster.

    ReplyDelete
  9. Well, everythings is true.
    One thing that annoys me is why the fuck there is no memory/performance profilers for the Silverlight? It's just not seirous.

    ReplyDelete
  10. I think theres alot of miss information in this blog. I do appreciate your effort to try and throw some kickbacks to flex but, Lets be fair. 1st thing that stood out to me was your mention on Flex frameworks.
    There are some amazing frameworks Flex Dev's can leverage in creating enterprise apps. To name a few: PureMVC, Cairngorm, Mate, Swiz. And when combined with backend frameworks for languages like coldfusion, java and all that you have spring and many others.
    Writing solid maintainable code is less about the platform and more about the developer. Don't understand how this is in the argument cause there are some horrible c# coders just like there are AS.(And some pretty amazing ones).
    with Ant Flex unit testing and coverage testing can be put right into the buildbot mix just like other languages like python and intergrated for automation testing of gui components. (Think HP Testing platform).
    On the note of refactoring. Flex Devs have some amazing eclipse based tools for refactoring code and debugging including conditional breakpoints. Think FDT 3 and De MonsterDebugger , RED|BUG to name a few.)
    Some major drawbacks your not mentioning is how Silverlight only runs on IE. Boo anyone and everyone knows IE is any webdevelopers pain in the -0-.
    Silverlight has no answer to AIR. Have a mac cant even see silverlight content unless your using vmware fusion and running IE.
    I work and dev in an enterprise environment and we are very crossplatform. And so is our userbase. Flex can sit on top of any serverside techonolgy. The way flex deals with raw data formats, i have yet to see Silverlight do the same. You used a good example about number crunching in Flex. But, why wouldnt you handle that server side in a java app or .net app and just use Flex /Silverlight to handle the raw data and present it. Making either app do that kind of stuff clientside is not always ideal and would see very heavy performance hits on either platform. I'm not really convinced. Not just becuase i'm a Flex developer because im also a c++ developer who does game development on the directx and opengl platforms. All i'm saying is just be fair and honest. A chart would be helpful.

    ReplyDelete
  11. Few more things i wanted to add.
    Actionscript 3 is based off ECMAscript 4 the same language that javascript is based off of. It's solid, flexible and proven.It's not just some kiddy scripter language its a full blown OOP language.
    More things to note.You dont have to use eclipse at all to develop in flex. You can develop full blown enterprise apps. Just using Vim or gVim, or ultraedit or textmate, notepad if you want theres flashdevelop just add the the flex compiler, which there are 2. You can also do full blown debugging in those environments with fdb including remote debugging.
    There are a host of other ways to code for flex.
    You can develop on whatever mac, linux, windows its up to you not forced on you. There is also ways to team code built right into regular flex 3 Called Team>Share Project.
    Other thing i wanted to mention was support for live monitoring and debugging your app for crossbrowser support including flashtracer and firebug. Some of the more awesome things about Flex that wasnt mentioned either was the way Flex consumes webservices, E4X and access to all the framework code. Don't like the way adobe decided to do something. Write your own.
    As for third party components that you claim theres not alot for flex, Wrong, there are a ton.Some opensource even. Think: flexbox, flex.org,Flex lib, yahoo astra,flashloaded,flashcomponents,flashden, jumpeyecomponents, i can go on. Thats just to name a few. I guess all im saying in closing is do a little more research for you say authoratively what flex 3 doesnt have cause then it makes me question what your not telling me about silverlight either.

    ReplyDelete
  12. Hi thanks for your comments, a few comments in return.

    Firstly Silverlight, does most definitely run on Firefox. You can even debug Silverlight in Firefox on a mac served from a Linux box – so I’d say your comments are rather miss informed. There’s no AIR equivalent, but you can just create a WPF app with a 95% shared code base.

    I’ve used Caingorm and frankly thought it was rubbish. In my opinion these frameworks are not as mature or sophisticated of comprehensive as what’s available for C#.

    As for getting the server to deal with decimals – what if you want the user to enter a decimal into and do calculations on the value as he does so. Do you suggest he puts in a string and you server round trip each time? Hardly a very interactive experience. This has been a real problem on the project I worked on.

    Silverlight is more than capable of working with cross platform formats. JSON/SOAP/XML, or Lightstreamer for Push. These don’t have to be hosted on Windows Servers.

    I agree writing solid maintainable code is more about the developer. But when refactoring becomes so difficult because the tools are rubbish keeping a solid code base becomes impossible. My main point with regard to the developers though is that someone who’s used patterns like IoC etc for years will write better code than someone who’s been working with design for years. There are a lot more Flex devs with design backgrounds. I’d say the same thing about Java devs being more experienced in writing good code than c# devs. It’s not because they’re brighter, but because the more sophisticated patterns have been around for longer in those languages and so the average dev is more likely to be familiar with them.

    Ultimately I’ve developed on both platforms. In my view the Silverlight developer experience wins absolutely hands down, specifically when it comes to large scale enterprise software. I’m not saying Flex doesn’t have its place, I’m just saying that if you’re going to be developing a big Enterprise application then in my mind you’ll save a lot of money if you choose Silverlight.

    ReplyDelete
  13. No AIR equivalent? The single biggest new feature in Silverlight 3.0 was the out-of-browser installation.

    ReplyDelete
  14. SilverLight runs native on Mac and Windows, and in most browers including Safari and FireFox - been this way since the start. The Moonlight project runs SilverLight on Linux. SilverLight 3.0 can be run out of browser, as would an AIR app.

    I've been involved with Flex in the enterprise and it's not ready. There is no support for SOAP webservices (except if you buy a Flex Data Server!) and the XML parsing performance in Flex is so poor we ended up writing our own parser inside of flex. Even something trivial, like HTTP authencation, is missing from flex. We also experienced the problems of needing to tweak the controls to get them to work as users expected.

    Flex has an install base - and thanks to SilverLight pressure Adobe finally updated their Linux client to support flex. JavaScript has a good install base as well, so for me the choice is JavaScript or SilverLight.

    ReplyDelete
  15. Nice article and very helpful! I just wanted to point out that when you mentioned Autofac, the way it is worded makes it sound like Google wrote Autofac.

    ReplyDelete
  16. I've also recently had to develop both a flex application and Silverlight application and you've basically summed up all my experiences with it. The flex IDE is a real productivity killer as it takes us minutes just to do a build.

    Also you missed that flex only has async calls which makes it harder to develop sufficiently complex apps.

    ReplyDelete
  17. 100% transportable code from the server side and the client side is a big plus.
    I have C# validation logic that runs in IIS powering an ASP.NET frontend, Client side in a Silverlight UI, in a Compact Framework App and running in several background Windows services on my servers... All using the same code base.

    ReplyDelete
  18. One more thing worth noting, C# has much better support for 64 bit values. With Flex you can only represent a 64 bit value with the Number type, but Number is floating point, so you lose some precission. This is a huge deal if your server is returning 64 bit values to your Flex client. You find yourself creating an object with two integer values, but in C# you just use the long type.

    ReplyDelete
  19. @Mythz, the same over here. Note that he mentioned Threading support on c#, but the fact of not having as such an impact that he should have listed it again on air as "no threading support". That said, the async calls are a escape of having UIs freeze ...

    ReplyDelete
  20. You put weights little bit more on silverlight side. Features are one on paper and the other thing in reality, silverlight is a new technology, it will takes time to prove in real applications.

    Cheers

    ReplyDelete
  21. I agree with the verdict of the blog. I have been also involved in flex app after developing in dot net for years. My silverlight Proof of concept failed in front of flashy flex app (integrated with yahoo maps). Flex definitely looked great, but when it came to developing that, it was far more costlier in flex.

    - Dinesh
    dineshdhamija.net

    ReplyDelete
  22. What do yout preffer?
    a) develop for closed platforms? (win)
    b) develop for ALL platforms and mobile???

    =D

    ReplyDelete
  23. While, I agree with pretty much everything said, the out-of-browser for Silverlight is not the same as Air, Air has additional frameworks. Silveright's out-of-browser experience is really just prism, putting a web app an icon and it's own process. Saying that you can build a WPF application is not the same thing, cross platform support may not be important in your industry but in mine it is.

    ReplyDelete
  24. Hi Alex

    Glad you like Autofac! A minor correction: Autofac is an independent open source project and not affiliated with Google. The Autofac site only happens to use Google's hosting services.

    Nick

    ReplyDelete
  25. Juninho, more accurately:

    What do you prefer?

    a) to develop on and for any platform supporting .NET or Mono (which you can port and compile yourself), which includes Windows, Mac, BSD, and of course anything that can run Linux, which includes phones, cars, wrist watches, a number of toasters..

    b) to develop on Windows or Mac in proprietary, expensive, vendor-locked software, and for the small set of platforms that Adobe is currently choosing to provide with a proprietary plugin

    ReplyDelete
  26. Hi Friend,
    Congratulations for this nice looking blog. In this post everything about Web Development. I am also interested in latest news, sometimes i posted on Customized application development

    ReplyDelete
  27. O_o

    There are a serious of misconception about flex vs silverlight.

    First, Flex and silverlight is part of the UI and UI controller, it haven't to do with the business logic in the 5 layer theory).

    I love silverlight but i am unable to use because:
    a) it is trivial to decompiler, yes, your compiled application can be decompiled (INCLUDING COMMENTS!). In flex, while is possible, the resultant is weird and not always functional.
    b) Runs only in windows and OSX, no love for linux users (and moonlight is a joke).
    c) Some task are done extremely quick :send a data (from .net,java or php) to flex, then flex show it in a grid and that's it!, you don't need to parse in a class, you don't need to mess with SOAP (and FYI the support of SOAP in silverlight is pretty screwed and limited).
    d) While the objects of flex are limited but they are lightweight.
    e) You can embed flash (flash or other flex) inside flex. In opposite it is not possible to do it natively in Silverlight.
    f) You must code twice or even more in c#.
    g) Silverlight third party software are embedded as a dll inside the silverlight, and some are heavyweight so you don't want to mess with it.

    ReplyDelete
  28. Scores of people surf the internet on a daily basis looking for blogs on specific topics and if you are among them, you won’t be disappointed after landing up at Bloggersblaze, a website that provides you with a blog directory that is considered to be the largest and most comprehensive over the internet. You will surely find the blog you are looking for in our social blog directories and by coming in touch with bloggersblaze, you would be able to enhance your knowledge on blogging and also it would be possible for you to connect with bloggers worldwide.

    ReplyDelete
  29. As a long time Java/Swing and Adobe/Flex/AS3 programmer I would have to agree that silverlight seems to be a preferred choice for corporate intranets. I wrestled for about a month with JavaFX and can tell you it's a joke.

    But, Flex is still the preferred choice for C2B rich internet applications mainly because of the installed base. But, in five to seven years, I would bet that silverlight takes over.

    ReplyDelete
  30. This comment has been removed by the author.

    ReplyDelete
  31. Sorry i stopped reading your article after you mentioned that printing is not available in SL. I have never worked on a business application where there was no need for some printouts. So what kind of hack do you need to achieve that?

    ReplyDelete
  32. I love C# (and Ruby) and the MS way of developing is great. But Moonlight on Linux is buggy and largely a hit and miss affair. On my Windows box I run Chrome, and within my browser Silverlight crashes frequently. In the end MS will only fully support Windows and IE, and if it does win the RIA race then its support of other platforms will whither and its following of standards will decay. IE6 anyone?

    ReplyDelete
  33. After reading this, it's apparently obvious you have a strong disregard for Actionscript 3 and a grave missunderstanding of it's capabilities.
    I think it'd be better if you also had "years of experience" in Flex, more importantly ActionScript 3, before convoluting the truth to suit your platform of choice.
    I've worked for YEARS as a Flash/Flex/AS3 developer and YEARS as a C++/C#/VB developer. Silverlight SUCKED - I've been steadily watching since the initial betas came out. I've studied JavaFX and just about every other "RIA" platform out there. Flash has been around 10+ years and has a very strong foundation.

    One thing I can point out - if you stick strictly with Flex 3 (ignoring the full capabilities of AS3), you WILL have the issues you've mentioned here. But, you actually take the time to really learn and understand how to use the Flash platform, you'd have to give it more credit that you've given here.

    ReplyDelete
  34. Oh and one MAJOR thing not mentioned - the Flex framework is open source so, you don't like something, YOU CAN FIX IT - make it what you want. I don't see that happening with Microsoft... ever.

    ReplyDelete
  35. I have been using Flex in entreprise app development for about two years. I typically use C# as a back end. I have done a couple of prototype in Silverlight with VS2008. The tooling is primitive compared to Flex Builder. With silverlight you still need to use Windows Communication or Web services just like Flex.

    With Flex/Remoting, your apps can handle a lot of heavy lifting in terms of transactions, Silverlight...is not there yet

    I find Flex a extremely powerful tool (been programming for 20+ years). As for Entreprise development, just look at SAP and Oracle, both these business application giants are using Flex as the client tooling in their business application UIs. ....and that says a lot about entreprise caliber credibility.

    ReplyDelete
  36. All good points.

    But another advantage to using the Flash platform is the RTMP protocol and server products. Building real-time, multi-user RIAs on the Flash platform is a piece of cake. Although 90% of our app uses C# /.Net 3.5 / ASP.NET MVC, we still use Flex and Wowza / Java for things like video / audio recording and multi-user live interactions.

    For now, AFAIK, doing is this in SilverLight is not technically possible. But I'm sure that'll change very soon. Give me something similar to FMS inside IIS and I'll leave Flex / Flash for good. But then again, Microsoft could be infringing on Adobe's patent (I believe it prevents one company from building a client / server product similar to Flash client / FMS over RTMP).

    Other than that, I 100% percent agree with your post. C# is a vastly superior language to ActionScript, and VS a much better / more stable IDE than Eclipse. (I've been coding Actionscript for 11 years and C# for 6 btw.)

    ReplyDelete
  37. Our whole giant enterprise app is based on Flex AND .NET backend. There is NO reuse other of RIA front end code with backend, NONE, there are services you call and that's it. Front end code being Flex or SL is VERY specialized, backend .NET code is core business logic. ActionScript(AMF) to C# transaltion is completely transparent to us and the only thing we really had to duplicate were all the dumb value objects, these can easily be generated by your build process.

    Where I think SL will destory Flex in a few years is 3rd party componenets, it doesn't look like any non graphics ones will emerge in marget anytime soon.

    And yes, Flash is buggy as hell sometimes, but like some other posters said, it's oftentimes the developers fault for not understanding lifecycle correctly, either way SL and .NET in general has a much more robust history.

    ReplyDelete
  38. Look this stage:

    If you choice Silverlight ...What happend if you developers use Mac OS? , and if you client use linux?, and if client's server is on linux/apache ?

    ReplyDelete
  39. Great article. It's a comprehensive comparison of the two, and completely resonates with me, also coming to Flex after several c# years.

    ReplyDelete
  40. This comment has been removed by the author.

    ReplyDelete
  41. Thanks for the information shared here. that was an interesting and informative. I had a good experience by participating in the Adobe DevSummit in 2009 and looking forward to attend Adobe Flash Platform Summit 2010 as well. AFPS 2010 is the single largest Flash Platform conference in India which features topics like Flash, Flex, Flash Platform, AIR 2.5, Andriod, RIA, LiveCycles, PHP and more. I found the information about the conference from adobesummit.com

    ReplyDelete
  42. Antonio Martinez: MacOS???? Virtual Machine with Visual Studio and nothing more. I meet a lof of people working in this way. Linux??? MoonLight project will refresh your ideas... Visual Studio 2010, Expression Blend 4 & Silverlight 4. No More. Not Flash + Flex + Air + Eclipse + JavaFX + Adobe... Nothing more. Visual Studio 2010 And Expression Blend 4 ( for designers ) only that!. The best enviroment. Implementing enterprise applications ( with Enterprise Architectural Patterns, PRISM, MVVM, SOA, POCO's, ORM's, all service's protocols with Windows Communication Foundation, REST... ). Air???? Jajajaja, See Silverlight 4 Out Of the Browser or why not Windows Presentation Foundation 4. And All of that IS .NET FRAMEWORK 4!!!! NOT MORE!!!! Developers with Visual Studio + designers with Expression Blend working AT THE SAME TIME, IN THE SAME PROJECT, WITH THE SAME ALM ENVIROMENT. Visual Team Foundation Server ( with Agile or Scrum or everything that you want... ) using TDD or BDD or DDD ( cucumber, SpeckFlow, NBehave... ).

    ReplyDelete
  43. I have been using Flex in entreprise app development for about two years. I typically use C# as a back end. Mobile application development | Software Development Company

    ReplyDelete
  44. This is a really great post, thanks for sharing. I’m glad I got a chance to check out your blog!
    thanks,
    http://www.aishwaryaraiactress.com/

    ReplyDelete
  45. Flex Application development- flexdeveloper.in is one of the top most IT organization that offers cheap and best flex development, flex java development, flex design and freelance work at affordable rate. We have a lot of client all over the world.

    ReplyDelete