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.