Home >
Silverlight Development for the Flex Developer
The jets and sharks, Hatfields and McCoys, Philadelphia Eagles and New York Giants, Adobe and Microsoft. Now several years in the making, the Adobe - Microsoft rivalry is gearing up. Especially with the anticipated new release of Silverlight 3 and Flex 4. As any seasoned Flex veteran will tell you, Adobe is the defacto standard for Rich Internet Applications. When asked about interest in Silverlight, the response may vary, but usually ends in “I haven’t actually spent a lot of time [or tried] it.” A product of Microsoft, Silverlight is. But as professionals in the RIA industry it is a good thing to be open minded. After all, as hard as it is to admit, Flash isn’t always the best tool for the job.
To ascertain a full scope we will examine various parts of the RIA development lifecycle. These aspects include overall capabilities, tools, desktop application development, data services, and future state.
Overall Capabilities
Flex has some distinct advantages in the RIA world. High penetration levels, MAC development tools for tight design integration, stylesheets and robust skinning. Despite all that Flex has done for the RIA community, it is not without shortcomings. Surprisingly or not, Silverlight 2.0 seems to touch on most of these.
In many corporate and small business environments alike, there is still a battle between a designer and developer leaving a gray area where an RIA Developer or Front End Developer usually fills in as glue. Silverlight’s architecture is very impressive when looking at it from the standpoint of design and code separation. For instance, if a developer inserts a custom Button component as XAML, he may not want the designer to modify it by adding a border to the Button component itself. With Silverlight’s paradigm, the designer wraps the developer’s Button component with a Border component. Therefore, the design can be fully implemented in Blend via drag and drop of existing components that add style and life to a developer’s generic custom components.
How many times have you had a client inquire about streaming video? Usually the answer is “to do right, you need Flash Media Server, and it will cost you.” Flash Media Server is really neat, for those who can afford it. Silverlight on the other hand has the ability to integrate with IIS7’s built in streaming. Minus the cost of Windows Server 2008, which is negligible for most Microsoft Partners, streaming video becomes affordable and dare I say with impressive quality For a hosted solution, you have the option to team up with Microsoft for up to 4GB of ad free storage.
Furthermore, if you want to integrate ads, meta data for Silverlight video is powerful and Microsoft is announcing a program to support this at MIX 09, Microsoft’s annual Web conference. Microsoft has already made sure to demonstrate the meta data abilities for video. One such example is HSN.tv. This site is a great selling tool allowing HSN to stream live while giving users the option to buy what is being currently shown.
Additionally, DeepZoom is a super neat feature of Silverlight. DeepZoom, which is baked into Silverlight, allows dynamic zooming for high resolution images. Although this UI functionality has been developed for Flash and Flex, Silverlight DeepZoom’s smoothness is unmatched. CPU performance is still debatable, but there is a clear advantage with Microsoft’s choice to include DeepZoom with Silverlight from a development standpoint. A case study of this functionality can be found at the Hard Rock Memorabilia Site by Vertigo Software. To a well-balanced RIA developer, DeepZoom is potentially a huge selling point for certain use cases.
Tools
As a software developer, having the proper tools in your arsenal can be akin to the difference between carpenters using a hammer opposed to a nail gun. As Flash developers, the Flash IDE has been an excuse of a development environment for years. As a result, products like Flash Development Tool, Actionscript Development Tool, FlashDevelop, SE|PY have emerged along with ANT builds to help develop and deploy Flash applications. And of course, let’s not forget the beloved Flex Builder. Ancillary tools would be ASUnit, PaperVision 3D, Red 5 and more. Indeed, both Adobe and the Flash community have rallied to deliver a great toolset for executing on Rich Internet Applications.
With mature well developed tools, a Flex developer may beg the question, “What tool(s) for Silverlight could possibly compare to what is available for the Flash Platform?” One thing that Flex developers often pass over is Visual Studio. It is no surprise that Flex has strong ties to Java, and with Java developers, comes Eclipse. Java developers typically hate Microsoft, similar to how environmentalists don’t get along with right wing conservatives. Putting those differences aside and taking the time to start up a Windows box and Visual Studio 2008, you may be pleasantly surprised.
As much as we may poke fun at Steve Balmer, he was on point in stating that Microsoft has made a commitment to developers. Visual Studio shines in terms of stability, integration, and built in rapid development tools. Directly affecting Silverlight development, there are some impressive features. For instance, Visual Studio’s Intellisense is very different from autocomplete found in a default Eclipse install. The engine that drives Intellisense is not only fast, but very deep and comprehensive. On the design side, Adobe has recently released Flash Catalyst, formerly codenamed Thermo. Microsoft has accounted for this as well with Expression Blend. Blend is not only a nice design tool, it integrates seamlessly with Visual Studio. As far as maturity goes, Blend is at version 2 and Flash Catalyst is still in beta.
There are also a handful of add-ons and utilities that are very impressive. In no particular order:
Snoop
Very cool 3d visual debugging at runtime.
XAML Power Toys
Rapid development tool with form generation and advance XAML integration.
SmoothHD
IIS7 Smooth Streaming of HD Video.Microsoft has teamed with Akamai to produce a nice demo of this.
Silverlight Toolkit
A collection of additional controls and components made available outside of the normal Silverlight release. Ultimately, this is a community effort to help shape the future of Silverlight.
Silverlight.net
Also, silverlight.net is a great resource sponsored by Microsoft. It’s a one stop shop for learning about Silverlight and its various features.
Desktop Application Development
Desktop application development and deployment is an area where both the Flash Platform and Microsoft’s Windows Presentation Platform (WPF) shine in very different ways. Despite its lack of cross-platform compatibility, WPF does boast some nice features. WPF uses the Common Language Runtime with Iron Python (typically for use with C#). Iron Python runs extremely fast. When using WPF, the developer also has easy access to great new technologies such as LINQ. The development environment also decreases development time for porting applications as one can drag services from a Web application to their WPF application. It should be stated that WPF is a bit CPU intensive for more complex bitmap manipulation, such as 3D objects. However, with respect to the overall development process, WPF is easily developed and deployed for internal applications.
The easy deployment of WPF applications impacts development for the enterprise. For instance, rather than IT having to push AIR out to thousands of PCs then the application itself, only one deployment package is needed with WPF. Therefore, WPF can be very attractive when deployment is an issue, along with IT security concerns over a 3rd party plugin, AIR.
Data Services
RIA development and data integration are often quite synonymous. Evidence of this can be seen by Adobe’s focus of data services as part of their Flex certification exams. It’s of no surprise then Microsoft has been very thoughtful in their approach to data integration. If there would be one reason to user Silverlight, it may LINQ. By leveraging a query syntax, implicitly typed variables, anonymous types, and lambda expressions, Microsoft has made life easy when it comes to accessing and working with data. But at a high level there are several options: REST, ADO.NET, and WCF.
ADO.NET offers a very convenient way to create REST services, whereas WCF requires a little more work to create a service. For instance, WCF requires that service operations (think fetching a user by userId) need to be created manually, whereas ADO.NET will do this for you automatically. In the event that you are consuming 3rd party services, this is easily done as well with minimal coding. LINQ to XML is easily leveraged in these situations as well to normalize data for databinding.
Where ADO.NET falls to WCF is in scenarios where more complex business logic or use cases where consumption other than ATOM is required. WCF is also the newer technology and is basically a SOAP stack.
Overall, as far as data integration with Silverlight, Microsoft provides good tools and options for getting at and working with data. As with their other products, everything is tightly integrated, contributing to a solid rapidly developed application.
Future State
Both Adobe and Microsoft are committed to enabling RIA developers to innovate and create the next generation of Web and desktop applications. Silverlight, despite a low penetration rate, is making its stake in intranet and enterprise desktop applications. Silverlight 3 and Expression Blend 3 both look extremely promising, which will hopefully push developers and Adobe to build even better products. As of MIX 09, Silverlight will be offering true high definition video in full screen mode, SEO and deep linking capabilities, expanded video formats including H264.
Expression Blend is also getting an upgrade, presumably to better bridge the gap between design and development. Blend will be adding a tool called SketchFlow, which will allow designers to design the flow of Rich Internet Applications. Since Blend supports the direct import of Photoshop and Illustrator comps, this will be extremely valuable for prototyping and agile iteration.
Of course, some of these innovations are in direct response to Adobe ventures such as Flash Catalyst (applicable for prototyping and RIA design). Rather than viewing maneuvers such as these by Microsoft as simply competition with Adobe in the RIA space; features like DeepZoom, Web service integration, and II7 streaming show that Microsoft is doing more than just catch up. After years of developing Flash and Flex (dare I add Director) applications, will it be hard to adopt Silverlight as a real contender? Yes, however having the facts and an objective viewpoint we can all avoid the pre-school idiom of pounding a square peg in a round hole by choosing the right technology for the job, whether it be Flex, Flash, AIR, WPF, or Silverlight.




Facebook Application Development
I was hoping for an article that would summarize the current state of Silverlight, using comparisons that would be meaningful to a typical Flex developer (or to reasonably knowledgeable RIA Developers, in general). Unfortunately, by the end of the article, I had lost all confidence in it.
This article needs better copy editing; for example: "Buy at a high level there are several options: REST, ADO.NET, and WCF." And: "Adobe is the defacto standard for Rich Internet Applications." Er, no--Adobe is a corporation which produces the leading tool sets (Flex and Flash IDEs) and platform (Flash 'Player' Platform) for RIAs; to be precise.
This article make invalid, irrelevant, or unnecessarily subjective comparisons: "As Flash developers, the Flash IDE has been an excuse of a development environment for years. As a result, products like Flash Development Tool, Actionscript Development Tool, FlashDevelop, SE|PY have emerged along with ANT builds to help develop and deploy Flash applications. And of course, let’s not forget the beloved Flex Builder." Factually, the only _meaningful_ comparison to Visual Studio would be Flex Builder; the others are essentially irrelevant.
The article is arguably even wrong on the facts themselves: "How many times have you had a client inquire about streaming video? Usually the answer is “to do right, you need Flash Media Server, and it will cost you." Or you could use Red5, which is FREE. Ironically, the author even mentions Red5 later on in the article! Further: "Despite its lack of cross-platform compatibility, WPF does boast some nice features." WPF does actually run on the Macintosh (with full support from Microsoft, see: http://www.microsoft.com/silverlight/resources/install.aspx#sysreq), even if its cross-platform story is otherwise very lacking compared to Flash.
Given that I haven't looked at Silverlight in years and am not that familiar with it, it is disturbing that I found so many 'obvious' errors in this article. I look forward to a revised version of this article; but hopefully with a much higher standard of fact checking, copy editing, technical editing, and just plain editing--period.
Please try again . . .
Very Disappointed
Very Disappointed,
I agree that the author may have taken some liberties (e.g. "Adobe is the defacto standard"), but realistically it is hard to argue Adobe's boastful presence in the space.
I disagree with your standpoint that some of the lesser known tools such as FlashDevelop, FDT, etc are irrelevant. There are many development shops, even on the enterprise level, that use these tools _instead_ of Flex Builder. It would have been irresponsible of the author not to point them out.
Yes, you are right about Red5 being a great alternative to Flash Media Server. The Red5 developers have done a fantastic job. But Red5 is still an _alternative_, and Flash Media Server has the support and backing of Adobe, which is very attractive for the enterprise. Thus to many large companies, Flash Media Server is the only solution.
And finally, yes, WPF/E (Silverlight) is cross-platform. However, in the sub heading you are referring to, the subject matter is WPF Applications, not WPF/E (http://stackoverflow.com/questions/629927/what-is-the-difference-between-wpf-and-silverlight-application). Traditional WPF development is typically for Windows Forms. If you compile a WPF Application in Visual Studio, you will notice that it compiles to an EXE. Silverlight is more of a subset of WPF.
I understand what the author is trying to say. Don't get me wrong, I'm just as Anti-Microsoft as the next guy. But the fact of the matter is: Microsoft is making headway with RIA tools. Whether or not Microsoft is the "top dog" with RIA technologies at this time is irrelevant. You can never completely count Microsoft out of anything... they are the monster they are. And as the author stated, Microsoft Silverlight does have some comparable, and at times, better options for us developers out there. Silverlight can only get better.
Flex and SL in 3 years will be like Java and .NET a while ago...
SketchFlow was impressive, lets see what happens with catalyst...
The way I see it is that in the end, it's better for us. MS and Adobe will keep pushing each other and better more advanced stuff will come from it.
I'm a die hard fan of Flex, however seing what came of SL3 and it being MS, I think we won't have a choice in learning it. Customers with the horse blinders for MS will demand it.
But come on... the learning curve won't be that bad, afterall they got all the good ideas for SL from Flex. From what I see, some components are even named the same :)
I think this article is a useful look into how Silverlight differs from Flex. I was hoping for a bit more objectivity - it continually points out the advantages of Silverlight over Flex, rather than listing strengths and weaknesses of both.
I disagree with streaming video being expensive, as Flash Media Streaming Server is 1000 USD. Is that really a huge cost for a streaming video? Like the author said, the MS solution still requires buying Server 2008.
The author made a great point on Visual Studio. Personally, I develop in Flex/AIR to .NET using both Flex Builder 3 and VS2008. VS is hands down the best IDE around - lets be honest, MS have done something right there.
For RIA developers, Silverlight demands respect; it deserves to be learnt. MS are now pushing software development so significantly, that to ignore them outright is to do so at your own peril.
I am not convinced at all. I don't think the title Silverlight dev for flex developer can be used in here. From the article, it just seems like marketing way to lure flex dev to try sliverlight.
I can never understand why people speak about Flex and Silverlight as if they are mutually exclusive technologies. I guess it's habit from the old Windows/OS X/Linux debates of yore, but it simply doesn't apply to Flex and Silverlight.
While it's unlikely that the same developer will become an expert in both technologies, they both run on the popular OS/browsing platforms. Clearly, the Flash/Java crowd will support Flex and the MSDN drone army will support Silverlight. I don't see anything more interesting than that happening with either platform.
It's just like when .NET and Java came out; nothing really changed, we just got another technology choice and both languages improved from the competition between the vendors selling tools for each. Adobe and Microsoft are in competition to sell tools and server platforms, which means that they will produce all sorts of great features in an attempt to out-do each other. This means lots of choice for developers, and the cross-platform nature of the products means lots of choice for the consumer. As far as I am concerned, everybody wins.
- max
Maxim Porges has hit the nail right on the head.
This isn't a zero sum game, if you adopt Silverlight this doesn't mean you throw Flex in the bin and vice versa. I always get the question "which is better, Flex or Silverlight?" my response "It Depends.."
Reason being is it depends on a LOT of variables and having been an ex-Flex developer before Microsoft, I question the merits of this blog post? ie what is it that the author was trying to convey?
I was hopeful there was an insight into how folks are able to move back and forth between the two platforms as at the end of the day, people will decide one way or another to adopt Silverlight so why not help them understand the mapping of both skills?
-
Scott Barnes
Rich Platforms Product Manager
Microsoft.
Okay, i admiit...I'm one of the MSDN drones. That said, I agree 100% with Maxim and Scott - Flex makes Silverlight better...and visa versa. I hope Adobe continues to push MS to the extreme, because if/when they do, the result will be better MS tools/support for developing Silverlight applications. I'm sure there are some things Adobe can learn from Silverlight too. Competition is GOOD! Everybody wins!
Giants can't hold a candle to the Eagles.
I found this article to be poorly written, rambling, and biased. Has the author ever actually developed on these platforms or just evaluated them?
Scott and Maxim are definitely right here. RIA development organizations have to remain agnostic as a whole in order to provide the best possible solution for their clients. I don't think it is fair to expect a dev to become an expert in both technologies, but they should be familiar enough with both platforms to understand the capabilities and the pros/cons so they can make an educated decisions on what fits the needs best.
Flex and Silverlight are both heavyweight contenders when it comes to deciding on how to develop your new RIA. It is not a game of picking sides. Those days are over.
Karl
Alternative title for this article could be "A list of features where Silverlight is equivalent-to or better-than Flex". For my purposes I wish Tom would've spent some time on what Flex developers lose by moving to Silverlight and not just on what they gain.
The reason why everyone is either Flex of Silverlight is because by the end of this "war" both products will do pretty much the same thing. There will be NO point in learning both. It would be too time consuming and complicated and you can never be amazing at both tool sets.
So it DOES matter which one is best.
To be honest I'm more into Silverlight because I dont need the headache of learning yet more syntax to do the same things (I already know C#). So I will always be more productive going to SL (not that Flash is bad but it's just my circumstances that dictate what I learn).
Finally, what people really dont understand about SL3 is that MS has basically made .Net run on Macs! Now when people get their head around the concept that you can effectively make one app that runs like a normal app, in one code base and it will run on both PC + Mac (plus maybe Linux?) the potential is huge.
Adobe have that in Air but the vast majority of desktop developers are not (and will not bother) getting familiar with ActionScript (and by extension Flex). But there are alot of these developers who are familiar with C# and the .Net namespace.
The ability to just code for Silverlights namespaces and have a product that looks great and runs on all the major computers out of browser is just TOO big a deal. WPF is dead, as MS will build more and more effort into the SL framework.
MS know that the concept of the OS is dying so they have are using SL as the virtual OS. They want as much software running on MS products as they can (just like Adobe wants as many products running on the Flash virtual OS).
Its an important time whether everyone realises it or not. Flash + SL will be the future of Application Development (not HTML 5 etc..)
It's worth pointing out that if youy want to develop Flex/AIR/ActionScript apps in Visual Studio you can do so using Amethyst, which is a new VS Flex IDE from my company, SapphireSteel Software. Our current beta has Intellisense, debugging, code formatting (etc.). The next beta adds in refactoring. Later in the year we will launch two editions - Amethyst Personal (free) and Amethyst Professional (commercial - including a drag-and-drop design environment). More info on our blog:
http://www.sapphiresteel.com/-Blog-