Silverlight Hack

Silverlight & related .NET technologies

About Me

My name is Bart Czernicki.  I have been working with computers since 1988 and have over 12 professional years in the IT field focusing on architecture, technology strategy and product management.  I currently work as a Sr. Software Architect at a large software development company.

Below is the cover of my new book that shows how Silverlight's unique RIA features can be applied to create next-generation business intelligence tools

Buy the book on Amazon

Contact: bartczernicki@gmail.com

View Bart Czernicki's profile on LinkedIn

NONE of the comments or opinions expressed here should be considered of my past or current employer(s).  The code provided is as-is without any guarantees or warranties.

Calendar

<<  March 2010  >>
MoTuWeThFrSaSu
22232425262728
1234567
891011121314
15161718192021
22232425262728
2930311234

View posts in large calendar

RecentComments

Comment RSS

Top 10 Reasons why HTML 5 is not ready to replace Silverlight

Note: I know this topic is controversial, so I want to preface that this article is meant to be a conversation.  If you don't agree with something or I have information incorrect, please add a comment or e-mail me.  As the HTML 5 spec evolves, I will update this article.

HTML 5 is the next update to the HTML standard that powers the web.  There are many new exciting features being added like the the canvas element, local offline storage, drag and drop and video playback support.  HTML needed to evolve and added these features in order to stay relevant as the de facto markup language that can provide a rich web experience. 

This upcoming featureset is encroaching on areas dominated by RIA (Rich Internet Application or Rich Interactive Application) frameworks like Flash, Silverlight and JavaFX.  Unlike most RIA frameworks, HTML is not a proprietary language/framework and its standards are maintained by the World Wide Web Consortium (W3C).  This has led speculation that HTML plus the new RIA-like features can spell doom to proprietary RIA frameworks.  This article aims to cover what is in HTML 5 (as of February 2010) and how some features in the spec are lacking compared to RIA like Silverlight.  This is not a complete overview of HTML 5, nor is it a "HTML 5 vs. Silverlight" article.  Below is a quick list of items that I will be covering to try to prove my assertion that HTML 5 is not ready to replace RIAs like Silverlight:

  1. HTML 5 is not here...Yet
  2. Audio and Video Tag limitations
  3. Web Browser Compatibility
  4. Javascript Limitations
  5. Productivity
  6. Only targets the general Web
  7. No hardware acceleration
  8. No webcam or microphone device support
  9. HTML 5 standard or Google/Apple spec?
  10. HTML 5 is already behind Silverlight
  11. No Pub-Sub Model (updated 2/28/2010)

1) HTML 5 is not here...Yet

There are some really nice demos appearing of certain HTML 5 features (HTML 5 capable browser required like Safari, Chrome or Firefox 3.x).  As you can see, HTML 5 is very capable in creating RIA-like experiences:

A very large majority of current "HTML 5 demos" center around three key features: the new canvas, audio, and video tags.  The HTML 5 spec is MUCH larger than this.  For example, look at how many differences there are between HTML 4 and HTML 5.  However, many people (including technologists and developers) see one or two demos called "cool HTML 5 demo" and clamor on Twitter that RIA frameworks are gone.  If you dig down deeper, only a small fraction of the HTML 5 spec is implemented in some of the browsers.  Furthermore, the HTML 5 spec is still evolving (You will see some examples below of changes that have occured in the last few weeks).  Some have speculated it might take three to five years to implement the "full" HTML 5 spec once it is finalized.  Will it take that long?  I think companies like Google and Apple who have a very strong vested interest in moving HTML 5/WebKit along are going to push this faster.  However, the HTML 5 spec has to be finalized FIRST (to see the full scope of the implementation) before we can speculate on how long the undertaking will be.

Some of the new demos and features are great to play with.  However, I would be very hesitant to start rolling out HTML 5 features until the spec is finalized.  Most likely we will see the HTML 5 spec implemented in piecemeal over multiple releases.  In two plus years we should see browsers with taglines of "full HTML 5 compliant".  Until then, don't get caught up in the hype...HTML 5 is not here yet!

Note: Browsers like Chrome and Safari (based on WebKit) will probably implement features together in the WebKit framework and they will flow through into the browser.  I would bet on Chrome, Safari and Firefox to lead the charge in HTML 5 spec implementation.
Update 2/17/2010: This is a great article on the problems with the HTML 5 spec.  A great point by the author on how some engineers are accusing others of "sabatoge".  I particularly like the comment by Dorian Taylor about the heavy dependency on Javascript (which I go into detail below) that is a problem with HTML 5.

2) Audio and Video Tag Limitations

One of the biggest additions to the HTML 5 spec is the audio and video element tags which allows you to embed media files directly into the HTML markup.  This allows you to use these media files very similar to the way you would use the the img tag for example.  Providing the location of the resource is all that is required (Additional attributes allow you to create the behavior of the media elements such as streaming).  This is a simple and standard way to enhance your HTML with media files.

HTML 5 video tag markup from W3 Schools

I think HTML takes the right step with the audio and video tag additions.  However, providing a great multimedia experience is more than just playing a video file or a music mp3.  Here are some limitations of the audio/video elements and how it compares to Silverlight:

  • Realtime manipulation/inspection of audio files is not possible.  You can set some additional options like autoplay or buffering; however, you cannot manipulate the audio stream and provide your own equalizer changes.  Flash and Silverlight both can do this.  The HTML 5 audio tag will simply not suffice for more advance scenarios.
  • Limitations of the video tag (similar to audio tag).  You can set options like autoplay or buffering but more common and advanced features are missing.  In Silverlight, you have a wide array of options like applying shaders directly to the video and smooth streaming in HD 1080p.  These options allow you to provide a much richer and advanced video viewing experience.

HD Silverlight video with a 3D transformation and pixel shaders applied in real-time (from Mix 2009 conference)

 


  • No DVR-like/smooth streaming capabilties.  Creating a video viewing website like YouTube is possible in HTML 5.  In fact, Youtube is experimenting with delivering its own video content via HTML 5.  However, if you want to create a rich DVR-like experience with live video, you need a technology like Silverlight.  Silverlight's HD smooth streaming allows for picture in picture, pausing live video, rewinding, slow motion and downstreaming when bandwith slows down.  With smooth streaming, the buffering is minimized and you can jump to different spots of the video almost in real-time.  You can try the Silverlight smooth streaming experience here (Notice how the experience is better than just a simple YouTube video). This technology is so poweful that Silverlight smooth streaming is being used by the NBC Olympics and Netflix to provide HD video in 1080p to tens of millions of consumers.   This is the difference between a one-way stream from server to host (i.e., HTML 5 progressive download with simple stop, pause and play) and a two-way stream the viewer can interact with (i.e., the DVR-like experience).
    • Note: Providing an engaging experience to users is a huge deal.  Users who use DVR-like functionality watch three times more video than users who do not.  What does that mean?  Web sites that use a more engaging technology keep the viewers at their site. This is not limited to just Silverlight.  For example, MLB.com provides a very similar experience using Flash with HD add-ons.
  • Content protection/DRM does not exist in the video tag in HTML 5.  This is a huge problem for hosting copyright or sensitive content that you don't want viewers to copy or save to their hard drive.  Can you imagine Netflix using an HTML 5 video tag for a new Hollywood movie and everyone were able to save a copy to their hard drive?  Until this changes, the HTML video tag will only be used for non-sensitive media.  Silverlight supports a variety of digitial rights management architectures/encryption options.
    • One simple test is to go on YouTube and play a movie.  Next, go to your temporary internet files folder and find a file that was generated around the time you watched the video (It should be one of the largest files).  Rename that file to an .flv extension and the file is yours.  This is possible because progressive download temporarily stores the video file on your hard drive.  This makes simple tools like downloadyoutubevideos.com possible.  As you can see from our simple little test, this simply will not fly for any commercial media.

Note: Silverlight is not the only technology that offers smooth streaming.  Apple's Quicktime Streaming and Adobe's Flash Media Server are two examples of technologies that offer streaming and DVR-like capabilities.  It is worth noting that Silverlight Smooth Streaming is a FREE value-add to Windows Server 2008 IIS 7.x.

 

3) Web Browser Compatibility

The HTML 5 spec is partially supported by the latest versions of Safari, Chrome and Firefox.  Internet Explorer from Microsoft is the key browser missing HTML 5 support.  The fact remains that Internet Explorer is still one of the most widely used browsers in the world.  Designing a site without Internet Explorer in mind would probably not be a great idea.  Isn't evil Micro$oft simply blocking innovation?  I don't think so.  Internet Explorer 9 is rumored to have HTML 5 support.  Furthermore, Microsoft would further degrade the use of Internet Explorer if they simply decided to skip the HTML 5 standard.  No matter what your open-source/Linux fanboy tells you, that won't happen.

Let's say the next version of Internet Explorer comes out and it supports HTML 5 tomorrow!  As an architect/CTO, are you going to design a new web site in HTML 5 with over 66% of the web running Internet Explorer 6-8?  There are so many web connected devices out there that simply will not support HTML 5 for a long time.  Remember web connected devices include mobile phones as well.  Furthermore, many casual users (like your parents) may not upgrade their browser for the entire lifetime of the "family computer".  Furthermore, the HTML 5 specification is pretty big and different browsers support various features.  You can see from this Wikipedia article that no current browser supports the current HTML 5 spec (because it is still evolving).

 

Internet Explorer is losing its dominance. However, even a 10% drop would be equivalant to hundrends of millions of users stopping use of Internet Explorer.  I don't see a 20% drop until two to three years from now.  You can check out the web browser trends for yourself: http://statowl.com/web_browser_market_share.php

Note: Providing fallback markup is a valid option; however, this leaves yet another architecture/code path to put through QA.  That works great for sites that are template-based (like YouTube).  However, creating a large scale business app with fallback markup has a large cost associated with it.

 

4) Javascript Limitations

If you have done any sort of web development, you have probably used Javascript to provide dynamic content on the client browser.  The same applies for manipulating HTML 5 content.  So what is the problem?

  • Javascript does not provide a true parallelism.  Today's desktops and laptops come with two to four available cores.  Even future iPhone specs plan for multiple cores.  How can you rely on a language/framework that can't take advantage of all available cores?  Silverlight's .NET framework can scale up to eight processor cores.  You can see my two previous articles on how this makes a pretty substantial difference in performance.
    • Note: Web Workers for JavaScript will eventually provide the ability to utilize multiple threads.  The problem is that Javascript is a hybird between a imperative/declerative language.  For example, parallelizing for loops is not going to be possible without a re-write.  In .NET, I can use LINQ/F# or other declarative techniques to easily parallel multiple tasks.
  • Javascript is a cross between a functional and object-oriented language.  It implements only some of the functional and object-oriented language features.  The great thing about being based on the .NET framework is that Silverlight dynamic content can be created using C#, VB.NET, F#, and Iron Python (dynamic langauges).  This gives you tremendous flexibility and functionality that Javascript simply does not provide.  You can chose the right language for the task.  Some languages provide features that others do not (even in .NET).  For example, take a look at my asynchronous workflows in Silverlight with F# article.  
  • Javascript limits code sharing.  Do you have any server component code written in Javascript?  Stupid question, right?  However, if you are a .NET shop, you probably have business rules engines or components written in a .NET language.  The great part about this is that this code can be distributed to the Silverlight client.  Another example of sharing Silverlight code is with WPF.  Because both technologies have a lot of synergies, a large majority of code can be shared between Silverlight and WPF.  In the near future, this will be expanded to Silverlight Mobile as well.
  • Javascript is not the fastest framework.  There is not much to be said here.  There might be some minor exceptions but a well-written JavaScript application will almost always perform slower than a similarly written .NET Silverlight application (If anyone has examples that differ, please share).
  • Code Security.  Javascript suffers from the fact that the code can easily be inspected using just the browser (page -> view source).  Silverlight suffers a similar fate.  However,  Silverlight code is harder to inspect.  You essentially need to find the cached assemblies and use a tool like reflector to dissasemble them (Silverlight Spy is another tool that can inspect Silverlight code on the fly). However, as mentioned before, a person that wants to reverse engineer a Silverlight app has to go through more steps.  If you must deploy Javascript or Silverlight code on the client, always use an obfuscator and make the hacker work harder. :)
    • Note: As a rule of thumb, any code that you consider IP should not be placed on the client. 

5) Productivity

In this article, I define productivity as a set of architecture and design tools, add-on frameworks, and developer tools that makes me more efficient in crafting and maitaining an application.  HTML, CSS and Javascript suffer from a wide variety of productivity problems.  Have you used a web tool that does everything for you on a complex project?

  • HTML and CSS problem. CSS is language that allows you to enhance HTML with styles.  The combination works great in theory.  However, as the web has evolved to more "fluid HTML/CSS" designs (i.e., div tables with CSS), the web tools have struggled to catch up.  Furthermore, browsers like IE not supporting all of the CSS 2.x standard has led to cross-browser compatibility issues.  This has led to developers having to jump around manually getting their hands dirty in CSS (While that is not bad, it's not productive).  CSS is not a pretty language and large stylesheets are a MESS to work with.  For example, try looking at the CSS for SharePoint 2007.  This has been solved by creating CSS Metaframeworks that allow for cool features like CSS style inheritance which translates to smaller, more maintainable CSS.   Which web design tool that you use integrates with a new open-source meta framework?  Sure, the preview might work; however, you are still manually editing CSS in the end.
  • I can do anything that Silverlight can do with [insert web framework here]. I recently got into a debate with a web developer about Silverlight.  All the things I was listing Silverlight can do, his reponse was, I can download "this open-source framework".  Want to improve HTML DOM development? jQuery.  Need a declerative query language like .NET LINQ? jLinq.  How about a Javascript charting package? JS Charts. By the time we were done, his application included five to six additional frameworks.  I find this a productivity problem for a several reasons:
    • Open source/commercial javascript frameworks rarely integrate easily with web design tools (Some frameworks like jQuery that are hugely popular have enterprise tool integration like in Visual Studio 2008/2010).  An add-on framework will help productivity; however, the developer is not working in a design tool 100%.  Therefore, they are not being as productive as they can be.
    • Designers cannot design.  This makes the entire process of web design much harder for non-developers.  A designer should work in a design canvas and have the end result automatically translate to the markup language and pass this off to a developer for interactivity.  How is this possible with HTML/CSS/Javascript not being standardized in simple design tools?
    • Add-on framework maintenance.  On large-scale projects having to juggle multiple add-on frameworks can waste a lot of time.  For example, picking the correct framework, ensuring licensing is compliant, is the framework going to be maintained in the future, etc., are all tasks that need to be handled by someone.
  • Cross-browser issues.  Cross-browser issues are still a huge problem even for large companies like Google who announced this year they are phasing out Internet Explorer 6 support.  There isn't much to add here.  However, if you are a web developer and have not faced these issues, I would like to meet you. :)
  • Control/UI component development. Support for creating reusable UI components in Javascript is virtually non-existant.  It requires developers to be involved and write Javascript that crafts dynamic HTML.  For example, how would you create a Javascript control that renders a gauge?  
  • Integration with server technologies. Working with technologies like ASP.NET or PHP adds another level of complexity to HTML.  This further degrades productivity, by having to manage local client state between server calls (i.e., cookies, temp cache).  Tools like Visual Studio do a very poor job in making a designer feel like home when having to integrate server/client technologies together.

The Silverlight framework handles the productivity issues in a cohesive set of tools that include design tools, developer tools, and a rich .NET foundation.

  • Many architectural/code patterns can be leveraged using .NET:  MVVM/commanding design pattern is built into Silverlight 4, MEF allows for loose coupling of components, Silverlight Unit Test framework, LINQ (declerative query framework for data structures), asynchronous programming model, functinal language support like F#, etc.
  • Silverlight and the accompanying control toolkit include a ton of controls that can be easily extended or styled.  (Toolkit is open-source).
  • Advanced media capabilities like encoding an HD smooth streaming video and providing a DVR-like experience to the viewer can all be done with Expression Encoder and the Silverlight Media Framework.
  • Developer productivity is powered by Visual Studio 2008/2010 and the Silverlight framework.  Debugging parallel tasks in Visual Studio 2010 is easier than ever.  If you want to know if your application is taking advantage of GPU acceleration, Silverlight can highlight the areas affected!  Furthermore, helpful tools like FPS counters are all built into the framework.
  • Design in Silverlight is done using Expression Blend.  This tool can be used by both designers and developers to create UI controls, interactivity, and transitions easily in a single form.  The combination of design features like Sketchflow, behaviors, design-time data and visual state manager allow designers to design without writing code.  These tools allow designers to perform tasks like applying a pixel shader to a video, adding physics (gravity) to an object, and being able to create design-time data representations without writing any code.

Expression Blend Sketchflow allows designers to prototype applications with data, interactivity, and transitions without writing code.



I could add a lot more to this topic.  However, my experience on working on Silverlight has been "night and day" in terms of productivity.  Projects I have worked on allowed developers/designers to seemlessly create complex controls and extend existing ones and create very unique product designs.  The combination of Silverlight frameworks/tools and what you gain from .NET makes it a pleasure to work with compared to HTML/Javascript/CSS.  The tools that accompany the HTML 5 spec have to truly go through a revolutionary transformation in order to keep up with the design experience provided by Silverlight and Flash.

Note: I have a friend who recently got laid off from a "large" video game studio...pretty talented C++/graphics developer.  With the game industry hurting he moved onto web development/databases/services...regular business stuff.  He told me the same "mess" that occurs with video game development is the same thing he hates about web development.  Having to juggle between different graphics programs, exporting assets editing shaders, code etc.  was analogous to him with having to jump between ASP.NET, Javascript, CSS, HTML etc.  I thought this was a great analogy.

 

6) Only target the general Web

HTML 5 is a markup language for the web.  You essentially need a web browser to interpret HTML content.  Silverlight allows you to write once and deploy to desktop, web and now Windows Phone 7/Symbian/Android.  Additional features like multi-touch features allow you to take advantage of next-generation hardware natively, without having to rely on the browser.

Note:  I realize that technology like Mozilla's Prism allows for "installing" HTML/Javascript sites locally on the desktop.  But that technology is not very popular and I haven't met anyone that uses it widely commercially,


7) No Hardware Acceleration for Graphics (GPU support) or 3D support

The current HTML 5 spec does not have support to offload rendering to the GPU.  There are plans to support it in the future with WebGL technology using the HTML 5 canvas.  WebGL should provide 3D, hardware-acceleration, and pixel shaders to HTML/Javascript.  Silverlight (as of Version 3) already supports 3D projections, hardware-acceleration, and Pixel Shader 2.0.  Furthermore, the GPU acceleration is not limited to just one layout control (canvas in HTML5).  There are also many physics and 3D engines out there for Silverlight.

The screen shot below is from a chapter in my book that shows a piece of XAML layout that was GPU accelerated.  As you can see, GPU acceleration does free up noticable CPU resources.

One of the ugly parts of the WebGL implementation is that you are still using Javascript to provide dynamic content to the 3D Canvas.  I can imagine this being passable for simple 3D demos, but it won't work for complex interactive 3D scenes.  Doing complex 2D/3D vector math or matrix computations in Javascript isn't going to perform well.  For example, some military simulations for the HUD of a cockpit use a Flash UI for training.  Rendering these complex visuals and providing real-time event-driven calculations is important.

Broad WebGL support is probably a ways off as the spec is still changing.  The future Firefox 3.7 release will suport WebGL/3D Canvas. Other browers like Chrome and Safari will get support as well via the WebKit compatibility.  I would estimate we should see decent WebGL support for Chrome, Firefox and Safari in one to two years.  The reason why I think it is still a year (or two) away is because there are major revisions yet to be implemented and tested.  Furthermore, WebGL is an extension of the HTML 5 canvas.  Therefore, it would make sense that once the canvas tag has matured, WebGL will probably have some upcoming changes.


8) No Webcam or Microphone Device Support

Providing device support integrated into the browser is a huge deal for social, collaboration, and media applications.  Web cam and microphone device support is becoming a big deal for mobile applications as well.  The HTML 5 spec does not support these devices.  There is a plan to add device support in post HTML 5 (5.01 or 5.1, etc.)  Conversely, Silverlight 4 supports both of these devices.

Augmented Reality Applications (shown below), web conference/chat (chatroulette.com), or real-time photo manipulation (and more) applications can all be done with Silverlight 4 device support.  (As the HTML 5 spec stands now, these types of applications cannot be done natively with HTML/Javascript).

Rene Schulte's great example of Silverlight 4 augmented reality

 

9) HTML 5 standard or Google/Apple spec?

A large majority of the HTML 5 spec is being pioneered by the Google and Apple engineers; not that this is a bad thing.  However, note that both Google and Apple do not have RIA or popular graphics frameworks.  They have to do something and have a very vested interest in HTML 5 coming out ASAP.  Rather than creating their own RIA-type frameworks, they are trying to evolve the HTML 5 spec to compete with the rich RIA web experiences.  Here are a couple of interesting points to think about:

  • Do you trust Google to evolve the spec "the right way"?  Google has this aura of being the "not evil corporation" which you would be naive to truly believe.  Will they push for a HTML 5 spec that is serving their own services/technology roadmap or pioneer changes for the greater good of the web community?
  • Adobe is a wildcard here.  What if Apple purchases Adobe? (This acquisition makes sense on many levels).  Will Apple still be as vested to evolve the WebKit/HTML 5 spec?
  • Apple has a proprietary/highly locked down framework with the iPhone/iPad SDK.  What if they decide to use that as the next RIA alternative? You have the same framework on smart phones/tablets; why not move it to desktops?
  • Will Apple/Google alienate other companies like Microsoft, SAP, Oracle, IBM with the way the spec evolves?
As you can see here from this article/chart, Google and Apple are #1 and #2 in evolving the WebKit spec.  In this article, I referenced the HTML 5 spec numerous times.  Notice how a large majority of the spec "owners" are Google engineers.

Update 2/21/2010: Looks like Google has officially scrapped evolving Google Gears (the HTML RIA-like framework) in favor of the investment in HTML 5.  BTW Ian Hixon (the "owner" of the HTML 5 spec from Google's end and some would say the entire HTML 5 spec) was the one that said "Adobe was blocking the spec".  So no one can object the HTML 5 spec if it doesn't support Google's plans?  See where this can get really bad?

10) HTML 5 is already behind Silverlight

This is the last point, however the most important.  After reading all of the "new" HTML features like: video tag, audio tag, canvas, Web Workers, WebGL, future device tag support etc. you should have realized that HTML 5 is JUST CATCHING up to Silverlight.  Furthermore, the HTML 5 spec is not close to being implemented. Lets assume that the full HTML 5 spec is implemented in 2 years (assuming a very aggressive schedule)...where will Silverlight be by then?  Silverlight is on about a 9 month release cycle.  Therefore, by the time HTML 5 is "implemented"...Silverlight will be on version 6 or 7of the platform.  HTML will have to play catch up....again.

11) No good pub-sub model

The current web is built upon the request response architecture.  You navigate your browser to a domain or a service URL -> click go -> receive a response payload.  Once you are done the content is static.  What if the server has new/updated content?? Additional Javascript can be run in order to update the content (make an Ajax call) or the user can manually click a link or refresh the content.  This works, however it is slow and prone to a lot of additional code.  For example, if you have watched a gamecast/box score of a live sporting event you have probably seen a client-side timer refresh (shown below).

ESPN refreshes their gamecast content with timers initiated from the browser client:

 

 

The client calls (even if they are automated) have to be initiated by the client, hence the name: request response. 

Wouldn't it be better if the client could "subscribe" to the content offered by the server? This way anytime the server's content has changed it would automatically send the update to the clients that have subscribed.  Silverlight has great support for the pub-sub model that runs on the net.tcp protocol as well as WCF duplex polling.  The performance increases are tremendous (thousands of percentage points).  Pub/sub is another great option for the Silverlight architect/developer. (A great article on using the WCF net.tcp binding with Silverlight 4 can be found here).

Note: HTML 5 is supposed to include something called web workers, which are going to add pub-sub capabilities to web applications.  More info can be found here. (As mentioned several times before, there are other competing architectures in the spec waiting to be ratified which makes this more of a mess).

 

 

kick it on DotNetKicks.com 
Posted: Feb 08 2010, 10:31 by Bart Czernicki | Comments (20) RSS comment feed |
  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Filed under: Silverlight | Silverlight 3
Tags:
Social Bookmarks: E-mail | Kick it! | DZone it! | del.icio.us

Silverlight 3 and F# Support in Visual Studio 2010

The goal of this blog post is to make you aware of F# support in Silverlight in Visual Studio 2010.  In addition, this blog post shows an example why F# is going to be very important for Silverlight architects and developers.  Note:  This is NOT an intro to F#.

Demo and Visual Studio 2010 source code are provided with this article.

In Visual Studio 2010, F# is a first-class language.  Over the last several months, the language has been "productized."  It is officially part of the Visual Studio 2010 ecosystem (tools and .NET 4.0 framework).  However, F# is not limited to the full .NET framework; it is also available in the Silverlight runtime.  This is really exciting as this allows you to take advantage of functional programming features in Silverlight.

 

In Visual Studio 2010, the "F# Silverlight Library" project is natively supported.

 

Silverlight 3 application that includes an F# assembly.

  

Why should I care about F# in Silverlight?

Most C# developers/architects who do not have experience with functional programming language features could assume that F# is another language like Visual Basic, J# or C++.  It would be wrong to compare F# to any of these languages (including C#).  As a functional language, F# allows developers to design software using the functional paradigm.  What does that mean?  This means functional patterns such as interactive programming, pattern matching, immutable data types, type inference, lambda expressions, workflows, higher-order functions, discriminated unions, etc., are all included in F#.  While taking advantage of these features, a developer using F# can use the type system, implement object-oriented design and make use of the .NET classes.  This makes F# a very unique language that combines all the features of a first-class .NET language (i.e., C#) and a professional functional language.

Note: F# compiles to IL just like any other .NET language.  However, F# has been designed from the ground up over the last couple of years.  Therefore, the IL it generates has been optimized and many new language optimization features have been implemented.  For example, you may have seen blog posts that compare C# and F# syntax that shows F# compiling into cleaner IL and faster code.  Conversely, C#'s core functionality has not been redesigned in about a decade (C#/.NET has been extended with functional features such as type inference, extension methods, lambdas, AST, LINQ, etc.)

 

Show me some code that proves how F# can add value to Silverlight

This short blog post is not meant to be an F# introduction (Please see links below for intro material).  However, I did want to pick at least one compelling feature that really shows off the power and functional brevity of F# married with Silverlight functionality.  The feature that I decided to show off in a Silverlight F# module is a concurrent programming pattern.

If you do not already know, Silverlight supports distributing logic up to eight processor cores (This frustrates me that Microsoft doesn't adverstise this enough). In my opinion, concurrent programming is THE biggest feature of Silverlight over other RIA technologies (i.e., Flash, JavaFX).  However, implementing asynchronous patterns in Silverlight is not trivial.  The callback pattern is messy and leads to a lot of code.  Silverlight runs in an STA mode and requires UI elements to only be modified by the main thread (dispatching or synchronization).  Even asynchronous constructs like the BackgroundWorker that are supposed to make concurrent programming simple lead to many messy lines of code with events.  Wouldn't it be great to get the benefit of asynchronous programming without having to write many lines of additional code?

One of the fantastic features of F# is that the default type immutability and functional design allows the language to express the desired result declaratively.  This means you write F# syntax by telling the program what you want it to do rather than how to do it.  For example, if you are using constructs that use secondary threads and allocate code to these threads, then you are writing imperative code.  A lot of lines of code are wasted telling the code how we want it to behave.  Wouldn't it be better to define pieces of logic and simply say that we want them to execute in parallel?  Functional declarative code in F# can do exactly that.  F# includes a feature called asynchronous workflows that allow you to write logic by composition with the aim to be executed in parallel.

Initial Steps

  • I created a simple Silverlight application.
  • I added an "F# Silverlight Library" project
  • In the F# assembly, I added an F# code file called ConcurrencyTest.fs.
  • I created an F# function called addNumbers that takes two parameter:
    • The first parameter is an accumulator that is the existing sum in the running sequence (This will be passed by the reduce sequence function).
    • The second parameter is the number in the sequence we want to add.
  • I created an F# function called squareNumber that takes two parameters:
    • The first parameter is an accumulator that is the existing square sum in the running sequence (This will be passed by the reduce sequence function).
    • The second parameter is the number in the sequence we want to square.
  • I created an F# function (equivelant to a C# method) that takes no input parameters named PerformTwoLongRunningTasks:
    • Inside that function, I defined two tasks that use the addNumbers and squareNumber functions to add the numbers across a sequence of numbers from 0 to 10,000,000
    • The PerformTwoLongRunningTasks function returns an array of 64-bit integers.  The array of 64-bit integers are the results of the two aggregates functions.
    • The first function returns the sum of the numbers.  The second function returns the square of the numbers.

The F# static method/function is shown below (Some familiarity with F# is required to understand what is going on, but I commented on the code for those unfamiliar with F#):


Now that we have this function (static method) defined in our F# library, it is ready to be used.  In the Silverlight application, we can add a reference to the F# library and then we can call the function (static method) as shown below in our C# Silverlight MainPage class.  Note that below we are calling the function just like we would call a static method with the [Name of Class].[Name of public function].  Notice also that because F# uses the base .NET type system, the returned array of integers does not need special casting/marshalling to C#.

Parallizing the Tasks

Now it is time to parallize the two tasks and scale it across multiple logical/physical processor cores.  As mentioned earlier, we are going to accomplish this with asynchronous workflows. In the figure below, I highlighted the changes to the function and it now scales across multiple cores.  This was done in two steps:

  • Wrap the body of the member functions with the async {... } syntax.
    • Add a return keyword (This signifies the return parameter/completion of the body).
    • The body of the function Seq.reduce addNumbers {0L..10000000L} now becomes async { return Seq.reduce addNumbers {0L..10000000L} }.
  • The main function (PerformTwoLongRunningTasks) now returns an array of async tasks.  These can be thought of delegates that need an Invoke-type command to execute them.  We simply change let results = [| task1; task2 |] to let results = Async.RunSynchronously (Async.Parallel [ task1; task2 ]).
    • All this does is tells the F# compiler to parallize these tasks.  However, run the result synchronously.  Therefore, the code returns to the main thread and we do not need dispatching/synchornization, etc.  This is analogous to creating a wait event in C# and having the two pieces of logic scheduled on secondary threads and waiting for this process to come back.


Asynchronous workflows allowed us to simply wrap the tasks as an "async function" declaratively.  This is a very important distinction as we just declared the logic and told it we want this to run in parallel.  Notice we didn't tell it "how to run in parallel" (imperative code).  Therefore, we did not have to:

  • explicitly start, stop threads (i.e., Thread.Start)
  • use BackgroundWorker
  • use callbacks (AsyncCallBack)
  • use BeginExecute asynchronous pattern

We simply told the code we want the tasks distributed among multiple cores and let the F# compiler figure out the hard part and generate the IL.  This is really powerful and in the very near future of "declarative parallel processing".  This is an example of what I mentioned earlier that the F# compiler has been designed recently and can include this type of "magic" right in the language.  C# does not have this feature and needs to be extended to provide this kind of automation.


Can't I do this with PLINQ?

Those familiar with the Parallel Extensions Libraries that will be added to .NET 4.0 might be aware that LINQ has been extended with parallelism features.  This allows you to extend your existing LINQ queries with parallism features.  This is known as PLINQ (parallel LINQ).  For example, a screen shot below shows a LINQ query that can be easily parallized by simply adding the AsParallel() extension method.

Unfortunately, the Parallel Extensions Library will NOT be available for Silverlight for the Visual Studio 2010 release.  However, I think that there is a good chance future versions of Silverlight will eventually get this feature.  There are some big features in the Silverlight assemblies that are simply missing and need to be added before features like PLINQ can be added.  This is exactly where asynchronous workflows can be substituted for PLINQ in a Silverlight application.  If you are working with large data sets, complex math computations, AI for a game, etc., parallelizing your code in F# libraries makes pefect sense for a Silverlight application.  This is MUCH easier than writing your own imperative multithreaded code.

How about the Performance?

I extended the functions and created functions for two, four and eight tasks and put this in a Silverlight application.  On my workstation (four cores), there was about a 50% improvement by parallelizing the two tasks.  With four tasks, the improvement in performance was about 3.5x.  As you can see, asynchronous workflows can easily dramatically improve the performance of your code on the Silverlight client.

Click the picture below to launch the demo application

 

Getting started with F#

Information on F# has been around for several years.  There are many articles, white papers, and books on F#.  However, you do have to be careful and get content that is recent and relative to the current F# release.  The F# specification has changed dramatically over the last several months as the language was being "productized" and many methods/functions simply don't exist in F# anymore.   Below are some links I put together where to get started.

Videos

  • Getting Started with F# - This video (from the 2008 PDC) is the place to start if you have zero F# experience and/or if you want a really good introduction into functional programming and some F# examples.

Books (I have read four different F# books and the two below are by far the best ones and most current.  Don Syme's F# book is good but a little outdated.)

Websites

  • http://www.fsharp.net/- This the main Microsoft F# page.  Includes numerours links, downloads for Visual Studio, F# extensions, etc.
  • Don Syme's blog - Don Syme is one of the main "creators" of F#.  His blog is a must read to get insight into advanced topics and upcoming F# news.

 

I hope this post gets Silverlight architects/developers exited about upcoming F# support.  F# is another tool that software architects can use that helps them create better software.  Furthermore, F# suport is another example of Microsoft's ability to integrate the Silverlight runtime across the .NET development stack.

kick it on DotNetKicks.com
Posted: Nov 04 2009, 16:16 by Bart Czernicki | Comments (0) RSS comment feed |
  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Tags:
Social Bookmarks: E-mail | Kick it! | DZone it! | del.icio.us

Silverlight 3 Beta - Downloads You May Have Missed

Everyone that is interested in Silverlight 3 Beta development has probably checked out all of the core items in the release: Silverlight 3 SDK, Silverlight 3 Tools for Visual Studio 2008, Blend 3 Preview, Silverlight Control Toolkit (March 2009 version).  There have been several other releases that are related to Silverlight 3 you may have missed and are a little less obvious if you are new to Silverlight development.  This blog post deals with the items that are a little less obvious but important to know about.  Not all of these downloads are targeted for Silverlight 3; however, they should work with Silverlight 3 Beta.

"There have been a ton of tools released

with Silverlight 3.  Did you miss any of them?"

Data Access

Silverlight includes several different ways to consume data (most of them being via services).  There have been three new updates to the data service frameworks available for Silverlight released recently:

  • .NET RIA Services - This is a new n-tier design framework released during the MIX 2009 Conference.  This framework allows you to factor more of the work into the service tier for business logic, validation, errors, querying, etc.  This framework is new to the Silverlight 3 Beta.
  • ADO.NET Data Services 1.5 CTP1 - This is a preview version of the upcoming update to ADO.NET Data Services which provides client and server enhancements for Silverlight developers who create service applications.  It is very similar to .NET RIA Services (In fact, many people think these are the same; however, these are DIFFERENT frameworks)
  • WCF REST Starter Kit Preview 2 - Yet another data access framework from Microsoft.  This framework targets WCF and applies REST architectual patterns for service access.  In my opinion, WCF with REST gives you the most flexibility and control when creating data aware applications with Silverlight.  Using interceptors, you can control every aspect of message headers, creation, caching across the channel stack.  The WCF REST Starter Kit will be included with .NET 4.0/Visual Studio 2010.
  • IdeaBlade DevForce - This is a 3rd party framework that works along the same lines as ADO.NET Data Services and .NET RIA Services.  They have some additional tools that take away some of the hassle of developing data access layers with Silverlight.  However, they are not FREE and they are a 3rd party framework.  They do have positive reviews.  The biggest difference between them and WCF REST, ADO.NET Data Services 1.5 and RIA .NET Services is that their product is out now and ready to be used.  If you want a Line of Business framework that is ready for production, give them a look. 
  • IdeaBlade web site

  

Architectural Pattern Frameworks

 

Silverlight is a plug-in that allows you to do a mix of web/winforms development.  However, its similarities lend itself to the same UI patterns that are well documented in WPF.  Furthermore, Silverlight as a plug-in needs to be hosted in a web environment.  Architecting the data flow from the host to the plug-in is also important.  This is where the MVVM and MVC architecture patterns apply.

  • ASP.NET MVC 1.0 - If you are working on the web, you have to host your Silverlight application somewhere.  ASP.NET MVC 1.0 allows you to build Model-View-Controller architected applications inside ASP.NET.  If you are implementing REST access or URL routing navigation inside your Silverlight application, ASP.NET MVC will wrap like a glove around your Silverlight XAP files.
  • Composite Application Guidance (also known as Prism v2) - This is a composite framework for Silverlight and WPF applications.  Microsoft provides guidance for enterprise development using the MVVM pattern and implement Commanding for Silverlight. This framework also includes a complete StockTrader example.
  • Microsoft Azure (March 2009 CTP) - Visual Studio 2008 Tools have been updated if you want to write applications in the "Microsoft Cloud".  Mesh Enabled Web Applications allow you to use Silverlight as the front-end for Microsoft data services.

  

Media Streaming with IIS 7.0

 

Silverlight 3 enhances the multimedia experience by providing true 720p HD streaming in full screen, hardware accelerated video processing and smooth streaming.  Many of these features were pioneered during the 2008 Olympics broadcast in NBC.  Microsoft has made this technology available to anyone who wants to host a Silverlight experience using IIS 7.0

  • IIS Media Services - Allows IIS 7.0 to be turned into a web server that can stream HD quality Silverlight media streams with smooth streaming technology that powered the NBC Olympics 2008 Site.
  • UX Media Simulator - This is a media player that allows you to graphically tune and visualize what happens when your Internet bandwith drops and Silverlight smooth streaming kicks in.  Pretty good tool to use to debug your content if smooth streaming is important to you.

 

Additional Tools

 

Silverlight's unique ability to run on the client while hosted on the web has provided it with many interesting capabilities that were previously hard to achieve.  Here are some tools that make our lives easier for developing in Silverlight:

  

Add-Ons and Code Examples

 

Microsoft has made a lot of the features really extensible in Silverlight 3.  Microsoft showed off many features in Silverlight 3 that can extend the features provided.

  • Expression Web SuperPreview for Internet Explorer - This tool allows you to test/debug your applications in IE 6, 7 and 8.  It is very cool and a must for any online compatibility testing with IE.  Most Silverlight applications remain web hosted so this applies to Silverlight as well.
  • Expression Blend 3 Sample Behaviors - Expression Blend 3 includes something called behaviors.  This gives designers the ability to drag and drop and add "triggers/events" to the design objects and have them "behave" in certain ways.  During MIX 2009, Microsoft showed off some real cool behaviors like adding physics to object by simply dragging and dropping it on top of a control.
  • Silverlight 3 Pixel Shaders - Silverlight 3 now supports Pixel Shader 2.0.  This allows you to write very interesting and powerful screen manipulation using HLSL.  For example, some of the nice Windows Aero Effects in Vista are done using pixel shaders.  There will no doubt be a CodePlex project created for Silverlight Pixel Shaders.  For now, many of the existing WPF pixel shaders can be made to work in Silverlight 3.
  • Slidentity Silverlight 3 Application - Slidentity is a cool Silverlight 3 Beta application that shows off many of the new features.  It is an end to end example with source code. 

As you can see, there has been a lot of stuff released around Silverlight 3 that is well beyond the "core release".  It can be very easy to get lost with the amount of tools/frameworks/apps out there.  If I have missed any obvious ones, please e-mail me and I will add it to the list.

kick it on DotNetKicks.com
Posted: Mar 23 2009, 16:26 by Bart Czernicki | Comments (3) RSS comment feed |
  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Filed under: .net | Silverlight | Silverlight 3
Tags:
Social Bookmarks: E-mail | Kick it! | DZone it! | del.icio.us

Silverlight 3 Release Date (RTW) Surprise

Update 07/08/2009: Silverlight 3 RTW has been released.  Please visit my blog post here for all the download links:

http://silverlighthack.com/post/2009/07/09/Silverlight-3-Relase-and-Download-Links.aspx

Update 05/28/2009: Scott Guthrie during his online talk yesterday mentioned that Silverlight 3 is close to being finished up and will be released "soon".  I remember when he mentioned that during Silverlight 2 Beta 2/RC0 and Silverlight 2 RTW was out within a few weeks.  The release is REAL close now!  Expression Blend 3 is also getting some updates in RTW.  Also note the July 10, 2009 invitation to talk about Silverlight 3...http://arstechnica.com/microsoft/news/2009/05/silverlight-3-and-expression-studio-3-launching-july-10.ars

Silverlight 3 Beta 1 was released last week during the MIX 2009 conference.  This version of Silverlight includes many enhancements that many developers want to incorporate into their RIA projects now.  The first question that comes to mind to many architectes or development decision makers is, when is the framework going to be released so they can plan their product development schedule.  Unfrotunately, during the conference, Microsoft did not provide clear guidance on when to expect Silverlight 3 RTW.  This article tries to gauge when Silverlight 3 will be released and why.

Based on the public knowledge available Microsoft released a few days ago, we can deduce when Silverlight 3 will be released.  What does it mean when we talk about the "Silverlight 3 release date"?

"Silverlight 3 is now much more than just

simply installing the SDK and the runtime."

At its core, the "Silverlight 3 release" includes several key dependent tools and technologies that need to be released together:

As you can see, this list has grown from when Silverlight 1.0 or 2.0  was released.  When Silverlight 1.0 was released, only Blend, the SDK and the tools were released.  Furthermore, the list of tools will no doubt grow when mobile support is added to the Silverlight runtime.  With all of these dependencies, it obviously will take longer for a Silverlight release and that has to be considered when predicting when the release will happen.

Past Silverlight Release Cycles

Let's take a look at the past release cycles of Silverlight 1.0 and Silverlight 2.0 of the major betas and releases:

Silverlight 1.0 (about 2 years between first public alpha/beta -> RTM/RTW)

  • WPF /E (several betas internal and external in 2006)
  • Silverlight 1.0 Beta (March 2007)
  • Silverlight 1.0 RC1 (July 2007)
  • Silverlight 1.0 RTW (September 2007)

Silverlight 2.0 (about 1.5 years between first public alpha/beta -> RTM/RTW)

  • Silverlight 1.1 Alpha (March 2007)
  • Silverlight 2.0 Beta 1 (March 2008)
  • Silverlight 2.0 Beta 2 (June 2008)
  • Silverlight 2.0 RC1 (October 2008)
  • Silverlight 2.0 RTW (October 2008)

As you can see, both Silverlight 1 and Silverlight 2 have had pretty long development cycles between public betas to when they were finally released.  If I were a betting man based on the past information, I would bet that Silverlight 3 RTW would be a long way away (at least 5-6 months away).  Furthermore, Silverlight 1.0 has had three "beta" releases and Silverlight 2 had four "beta" releases.  I even posted my thoughts on this in the Silverlight forums, based on my assumption that Silverlight 3 would be out around when VS 2010 is released later this year.

Silverlight 3 Release Date Hints

After watching some more of the videos from MIX 2009, more information has come out to make my assumption of a release in the 6-9 month timeframe incorrect.

PowerPoint Slide from MIX 2009 - Deep Dive into Microsoft Silverlight Graphics

From the slide above, we can see that Microsoft is actually planning a release in the Summer of 2009!  That would mean it would be about a 3-6 month release cycle from the first beta to RTW.  This is pretty surprising when comparing it to the Silverlight 1 and Silverlight 2 release cycles which were over 18 months.  This information was reiterated in a Scott Guthrie interview recently that only one beta of Silverlight 3 was planned.

 

Possible reasons for a shorter release cycle

Based on the information above, we can safely assume that Microsoft is going to deliver Silverlight 3 in one of the quickest release cycles for Silverlight.  How is Microsoft accomplishing this?  I can only speculate (based on public information), but I think it has to do with a few key reasons:

  • Silverlight 3 is like .NET 3.0 as Silverlight 2 is to .NET 2.0.  .NET 3.0 added WCF, WPF, WF and Cardspace to .NET 2.0; however, the core framework did not change.  Silverlight 2 uses .NET 3.5/Visual Studio 2008 and Silverlight 3 does the same.  I think that Silverlight 3 essentially builds upon the CLR with additional assemblies and doesn't change the core of Silverlight 2 much (I could be dead wrong here).
  • Silverlight Mobile is conspicuously missing from Silverlight 3.  Silverlight Mobile was demo'ed way back in April 2007.  Microsoft showed off Silverlight 2 on mobile devices in October 2008.  Silverlight 3 obviously does not include any mobile support.  I think Microsoft cut this feature out as they re-thought their mobile strategy focusing it towards Windows 7 Mobile (out in 2010).  Cutting this major feature out allowed Microsoft to push up the date by several months.
  • Silverlight 3 is essentially going to have tool support both in Visual Studio 2008 and Visual Studio 2010.  Visual Studio 2010 will add a rich designer for Silverlight 3 where developers will be able to interact with the XAML/designer much like they are able to now with Blend.  However, this support is NOT being added into Visual Studio 2008 (even though in Scott Guthrie's Silverlight 3 glimpse in November 2008 it looked like it would be added to VS2008).  So what?  I think that the Silverlight 3 could come in parts and all of the tools won't be released until the end of 2009.  We got another hint of that with Expression Blend 3 Beta not having all of the features being present (i.e., Sketchflow).  For example, .NET RIA Services might not be released RTW with Silverlight 3 in the Summer of 2009.
  • Silverlight 3 is a key part to Microsoft's UI strategy and it really catches up to a majority of Adobe's Flash/Flex features.  Silverlight still has some features missing that Flash/Flex technology has (i.e., printing, microphone, web cam.)  However, Silverlight 3 adds and builds upon several key features that Flash/Flex simply still don't have on their radar (line of business framework, enterprise integration, multithreading).  The Silverlight 3 feature set will roughly equate to the Flash/Flex feature set.
What about Visual Studio 2010

Update note:  Visual Studio 2010 Beta 1 public release is "in a matter of months now" according to Mark Wilson (http://videos.visitmix.com/MIX09/T73M).  Maybe VS 2010 Beta 1 will be released when Silverlight 3 RTW is released in the summer?  Remember Silverlight 3 is NOT dependent on VS 2010 and will work in VS 2008 and VS 2010.  Microsoft very well might release Silverlight 3 in the summer.  VS 2010 support and add-ons such as .NET RIA Services might come later.

In conculsion, it is a pleasant surprise that Microsoft is planning on releasing Silverlight 3 in the Summer of 2009.  This would make Silverlight 3 have the shortest release cycle out of all of the previous Silverlight releases.  This release packs a lot of features and has excellent tool additions which can benefit many RIA developers.  However, I think that Microsoft may have dropped certain features (i.e., mobile support) from the release.  Furthermore, the full Silverlight 3 developer experience may not be fully realized until Visual Studio 2010 is released.  This might hurt the release in the long run.  Personally, I am excited about the early Silverlight 3 release date. The early date allows me to start architecting on the new framework with confidence that my application will not be waiting for months on Microsoft for Silverlight 3 RTW.

 

 

kick it on DotNetKicks.com
Posted: Mar 22 2009, 12:13 by Bart Czernicki | Comments (12) RSS comment feed |
  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Filed under: Silverlight | Silverlight 3
Tags:
Social Bookmarks: E-mail | Kick it! | DZone it! | del.icio.us

Beginning Silverlight 2 From Novice to Professsional - Book Review

Quick Summary

Pros:

  • Excellent book for anyone getting into Silverlight 2
  • Detailed step-by-step exercises cover the core of Silverlight
  • Code is simple and easy to follow.  Does not introduce unecessary syntax sugar/advanced techniques that could confuse a beginner reader
  • Well organized.  This resource is a perfect example why a Silverlight novice should bye a book and not try to read from blog articles (which can contain misleading information)
  • Code exmamples work (I did not try all of them).  The ones I tried work spot on.
  • Delivers what it promises: a very good introduction to the core foundation of Silverlight 2 that can be built upon in future training or resources
Cons:

  • Does not cover some basic steps that could confuse Silverlight novices
    • A chapter dedicated to installing the Silverlight 2 SDK, plug-in, Control Toolkit and Expression Blend 2 SP1 together would have been welcome
    • "Introduction to Expression Blend" chapter completely fails to mention that SP1 is required for Silverlight 2 development. Having this critical piece of information missing from the resource is completely inexcusable as it will make the exercises unusable.
  • Does not provide much "resource value".  Once the reader has consumed the core information, only several chapters are worthy of several re-reads.
  • Truly for beginners only.  If you have done some WPF development or have done some basic prototyping with Silverlight, this book is not for you.
Detailed Chapter Overview
Chapter 1 - Welcome to Silverlight 2
This chapter introduces Silverlight 2 to the reader.  The introduction is short and to the point and explains what Silverlight is and what other analogous technologies are out there.  Not much to say about this chapter other than it is a good introduction.
Chapter 2 - Introduction to Visual Studio 2008
My least favorite chapter in the book. It feels completely out of place. This chapter introduces Visual Studio 2008 and goes over some key new features inside Visual Studio 2008: JavaScript intellisense, Multi-Targeting Support and Transparent Intellisense Mode (These features are not used throughout the book).  The chapter introduces us with the first exercise "Building Your First Silverlight Application".  The exercise is very detailed (includes screen shots in key areas) and to the point.  If you are at a book store and considering this book, focus on the exercise starting on Page 29 as it is very indicative of type of exercises you will see in the book. This chapter feels like it belongs as an appendix resource.  I would have rather seen this chapter replaced with a chapter on installing Silverlight 2 SDK, Visual Studio 2008, Expression Blend 2 SP1 together.
Chapter 3 - Layout Management in Silverlight
This chapter is very good on explaining how layout management works in Silverlight.  It introduces the main controls that govern layer control: canvas, stackpanel and grid.  There are plenty of exercises with screen shots that describe what each one does. The layout management topic is absolutely essential in order to be able to understand how Silverlight design works.  The location of this chapter in regard to the other chapters is perfect.  Developers that are not coming from a WPF/RIA background will find this chapter very informative and valuable in understating how Silverlight applications should be designed.
Chapter 4 - Silverlight Form Controls
This chapter introduces some of the base controls that make up the Silverlight 2 runtime.  The former part of the chapter introduces the syntax, properties and events associated with controls.  The latter part deals with some exercise dealing with several controls.  This chapter is very similar to Chapter 3 in that it is very well positioned in the book and the exercises do a very good job in conveying the necessary information.
Chapter 5 - Data Binding and Silverlight List Controls
This part of the resource introduces how binding works in Silverlight and then gives some detailed examples using the DataGrid/List controls.  Binding is a critical component of data-driven applications and how their information is consumed by the UI controls.  The binding component of this chapter is very well put together.  It introduces the concept and gives the reader just enough information for them to "be dangerous".  Binding in Silverlight has many facets to it and can be complex. This chapter doesn't try to overwhelm the reader with all of that information.  Having said that, if you are familiar with WPF binding, this part of the chapter will be nothing new (WPF data binding is signifigantly more complex than Silverlight's model).
The latter part of the chapter deals with consuming the data via binding inside a DataGrid and a List control.  The exercises show the reader the basics of consuming the data and presenting it in a nice way to the end user.  This part is very well done and one of the strengths of the book.
Chapter 6 - Data Access and Networking
This chapter talks about a very important concept in Silverlight of being able to request data from outside storage.  Silverlight cannot consume data directly from a database; therefore, understanding the network stack is essential for a Silverlight beginner.  This chapter covers two essential types of network communication in Silverlight: services and sockets.  Examples of both are provided in the book.  They are good examples; however, they are geared more for the beginner.  You would not want to follow these techniques in a real-world scenario; however, this does not fault the book in any way as it is meant as a novice introduction.
Chapter 7 - Local Storage in Silverlight
This is probably the most "fun" chapter for the reader as it covers the topic of local storage very well.  Furthermore, at this point in the book, the reader is finally presented with a well-crafted Silverlight exercises that shows off the power of Silverlight.  I really like the way the author presented the chapter and then introduces an exercise that builds on itself.  Isolated Storage is another one of those concepts that makes Silverlight unique and not just another fancy Web 2.0 technology.  It is a very powerful tool and the exercise presented in the chapter reinforces this very well.
Chapter 8 - Introduction to Expression Blend
This chapter is all about the design tool arm of Silverlight: Expression Blend 2 SP1.  The chapter starts off by speaking to the necessity of having a design tool because of Silverlight's rich UI.  My problem with this chapter (and the book as a whole) is that it doesn't provide all the information on Blend.  For Silverlight 2 development, Blend 2 SP1 is required.  Otherwise, your XAML design will simply not work.  This omission is completely inexcusable.  Furthermore, some links and overview of Expression Studio would have been nice.  This is a very frequent hiccup to developers new to Silverlight as they get confused by what Expression is.
The core of this chapter essentially introduces the tool and all its parts.  Even though I am critical of some of the omissions I listed above, the information here is very good for the beginner to understand where to find the design tools and how Blend is organized spacially in panels/toolboxes.
Chapter 9 - Styling in Silverlight
This is another fantastic chapter in this book, which is finally getting into some "meaty" parts of Silverlight.  This chapter covers the topic of styling.  The author does a real good job of introducing styling from inline properties, user control styles to application styles via XAML and Blend.  The author goes over a key part of styling that other blog articles constantly miss, which is the styling hierarchy and how it is applied to the control.  The concepts are presented with examples and screen shots like other chapters; however, this is where the layout of the book shines as it conveys a not so easy topic with ease.
Chapter 10 - Transformations and Animation
This part of the resource covers animations which are a core component of the Silverlight framework.  This chapter is very solid; however, the novice reader absolutely must try the examples provided to fully comprehend the information.  To no fault of the book, the different animations and transformations available in Silverlight are much easier appreciated online rather than the book.  On a website you can clearly see what the animation/transformation is supposed to do.
Chapter 11 - Custom Controls
The last chapter in this book covers custom controls and why/how you would want to write them.  This chapter is definitely the most complex part of the book and it is rightfully located as the last chapter.   The chapter introduces the best practice model (Parts & States) that Microsoft recommends in creating custom Silverlight controls.  Furthermore, dependency properties are explained and why they are key in custom controls.  The latter part of the chapter covers an example of creating a custom button following the best practice of creating custom controls.  This was one of my favorite chapters; however, I am not sure it fits well into an intro book for Silverlight.  One could make the argument that this chapter could have been replaced with a chapter exclusively on the Silverlight Control Toolkit or Silverlight's rich media capabilities (which is suprisingly missing from the book completely).
Summary
Robert Lair's Beginning Silverlight 2 book is an excellent resource for developers that want to get learn Silverlight 2.  The book is laid out very well chronologically and each section is clear and includes step by step examples and screen shots.  The code examples are written in C# using concise and simple syntax, which allows the reader to focus on understanding the new concepts rather than trying to understand syntactic sugar.  One of my presonal tests for using a book rather than online material is how much material does it offer beyond online resources (which are largely free).  Robert's book does that very well in that regard as trying to find all of the core Silverlight knowledge in one place without having a lot of misinformation is hard.   However, the book is missing a section on installing a Silverlight development with all the tools and I think that would be very valuable for Silverlight novices.  If find that many developers new to Silverlight are suprised how many tools are out there from the obvious ones like Blend to the less prevelant ones like Expression Web or Media Encoder.  This book delivers an intro to Silverlight spot on.  However, it does this almost too well as anyone familiar with WPF/Flash won't get too much out of this as a resource.  In conclusion, I would definitely recommend this book to any developer that wants to invest in the future and get their head around the core foundation of Silverlight.
This book can be purchased here on Amazon.

 
kick it on DotNetKicks.com
Posted: Feb 07 2009, 11:11 by Bart Czernicki | Comments (4) RSS comment feed |
  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Filed under: Book | Silverlight
Tags:
Social Bookmarks: E-mail | Kick it! | DZone it! | del.icio.us

Silverlight 3 - What we Know So Far & What We Can Predict (Part 3 of 4)

Silverlight 3 Platform Stack - Part 3
  • Part 1 - Silverlight 3 Announced Enhacements
  • Part 2 - Silverlight 3 Development Stack
  • Part 3 - Silverlight 3 Integration with the Microsoft OS and Platform Stack
  • Part 4 - Silverlight 3 vs Flash and the iPhone
  • In Part 1 of this short series, I looked at what we know so far about Silverlight 3 from what has been announced by Microsoft.  In Part 2 of this series, I take some educated guesses as to what and how Silverlight 3 will be released in relation to the development environment.  In Part 3 of this series,  I am going to take a look at the upcoming Silverlight 3 platform stack and how it will evolve to push Silverlight as THE leading RIA for business applications.

    A little history/background about .NET  in relation to Silverlight

    For those not familiar with .NET or those who have not been programming in .NET until recently, this will be some good background information that will set the precedent for a lot of my platform predictions.  .NET was formally released by Microsoft as a developer platform back in 2002.  In those days, a lot of top gurus argued that .NET 1.x was not really adding any value to the development experience.  The arguments were that it wasn't really revolutionary and a lot these concepts had been done before (and were being done better by other languages like Java).  Some predicted that .NET wouldn't even be able to compete with Java and Microsoft was yet again copying rather than innovating.

    A few years changes A LOT :)  Java is way behind in language features compared with .NET and .NET now is everywhere in the Microsoft stack.  How did this happen?  What many naysayers failed to see was Microsoft is more than just a software company with a couple of products.  They offer products that range from mobile phone apps to platforms that run the biggest companies in the world.  This is the exact way that .NET CLR went from a simple developer language/framework to being the core runtime across the board at Microsoft (Yes, I know MS still uses C/C++ for OS/SQL, etc).  Seemingly all new applications are written in .NET and many of the older C applications all have .NET level based APIs.  What does this mean?  This essentially means that if you want to extend/enhance/be more productive with the Microsoft platform, you will most likely be utilizing the .NET CLR.  A lot more can be written about this, however this core concept of how Microsoft made .NET a huge success plays into on how I think Microsoft can make Silverlight technology the premier RIA technology.

    Silverlight 2 Current Platform vs Silverlight 3 Possible Platform

    As you can see, Silverlight 2 (released in October 2008) has a limited platform stack.  As of today, SharePoint 2007 content can be extended with Silverlight 2.  Furthermore, the Windows Azure SDK (in private beta) supports the Silverlight 2 environment.  I added it in a slightly different color because it has not been formally disclosed whether Silverlight 2 or Silverlight 3 will be the fromal version for Azure.  Note: For those that do not know, Windows Azure is the Microsoft Cloud OS announced at the PDC 2008.  On the right-hand side, you see my predictions as to where Silverlight 3 will expand.  I am going to go through each item and list my predictions as to how Silverlight can be used.

    SharePoint & Web Parts

    SharePoint 

    SharePoint is Microsoft's collaborative platform.  The current version of the platform is SharePoint 2007 (which extends the free WSS 3.0 that comes with Windows Server OSes).  It was announced SharePoint was the fastest Microsoft product to grow into $1 billion in revenue.  Many businesses are installing SharePoint to place their internal documents, HR, financial/accounting, business intelligence, etc., systems into one consolidated portal.  SharePoint allows for a rich programming model with WorkFlows, SharePoint Designer, web parts and other APIs.  This allows developers to provide custom content that might not be available OOTB or via 3rd party solutions.  One of the ways you can extend SharePoint is with web parts using the web part framework.

    SharePoint is all about sharing data easily with a simple drag & drop (no programming) interface.  Right now a lot of the data exposure objects are essentially derivatives of ASP.NET grids presented nicely with Ajax magic.  For the most part, they work really well and are highly performant.  However, they could definitely benefit from some Silverlight integration.  For example, filtering/sorting/uploading documents can be brought down to the Silverlight client and improve the interactivity and performance.

    Web Part Framework

    The web part framework was introduced in ASP.NET 2.0.  This allowed ASP.NET developers to introduce portal/modular functionality that started becoming more popular with Web 2.0.  The web part framework was also introduced into SharePoint 2007 as well and the same API can be used to create web parts.  The Web Part Framework allows you to create web parts for both SharePoint and/or native ASP.NET.  You have an option to use the web part class from either the SharePoint framework or the ASP.NET framework.  The nice thing about using the ASP.NET framework web part class is that it will work in both SharePoint and ASP.NET, while using the SharePoint class limits your web parts to only work in SharePoint.  I prefer to use ASP.NET web part base classes as it gives you much more flexibility and the SharePoint web part classes only give minimal additional features.

    Silverlight & SharePoint/Web Part Framework

    The nice thing about web parts is that they can use a number of different technologies.  They can use plain vanilla HTML code.  They can use ASP.NET controls with postbacks.  They can use a combination of Ajax capabilities.  Obviously, they can be extended to us Silverlight as well.  This is a real powerful extensibility, as you can write a Silverlight application/module with minimal design considerations for SharePoint.  A web part wrapper can be written for the Silverlight web part that essentially consumes the XAP file and integrates with the web part framework.  This can add capabilities such as personalization properties, consume SharePoint lists/libraries, web part connections, feature deployment, etc. 

    Silverlight & web part design

    Essentially, we can write a Silverlight application, create a new project that references the Silverlight XAP file and use the Silverlight HTML bridge (C#/JavaScript) to link the Silverlight application and the web part framework features.  In Silverlight 2, a lot of this code right now is manual and unless you know Silverlight/web part framework rather well, this could be a daunting task.  There are a couple of projects out there that do some of the backend work for you.  One is the Microsoft sponsered SharePoint BluePrints on CodePlex.  Another good framework is the SilverPart also hosted on CodePlex. 

    Now you can provide a very rich UI for your SharePoint data

    This is very powerful extensibility of SharePoint to essentially add RIA.  Of course, you could have done this Flash/Flex; however, you can write everything in one single .NET language, single environment and a consolidated development environment.  The next version of SharePoint or Silverlight 3 will probably get formal support for SharePoint.  It would be pretty cool if you could simply just point to a Silverlight XAP file that implements an interface for basic communication and everything just worked.  Hopefully, in the near future we get this functionality.  Furthermore, Silverlight web parts provide additional features like "low postback design" and can offload some of the processing on the client thereby improving performance.

    Windows Azure

    Windows Azure is an OS from Microsoft announced recently at the PDC 2008.  The unique thing about Azure is that it is a "cloud OS".   This means all the services, data and all the backend "stuff" lives in Microsoft data centers.  Windows Azure is compromised of several services that work together and make up the total platform.  Currently, the Windows Azure platform is in beta and you can request an SDK to write Azure enabled applications.

    Services that make up the Azure platform

    Silverlight and Azure

    Cloud computing is the new buzzword in the industry.  This has been done by other vendors, even very well like Amazon's S3 service.  Microsoft (like always it seems) is late to the game.  However, Microsoft as a latecomer has to do things a little different.  A few things that make Microsoft's venture into cloud computing unique is that several of these services that make up Azure are first class services from enterprise products (SQL Server, SharePoint, Dynamics CRM).  Powering all of this is the .NET framework.  However, one uniqe aspect is that Microsoft also owns UI technologies like ASP.NET, Silverlight, WPF, and Surface that can be used to display these cloud services.  Silverlight's small footprint and being a web plug-in play a big part in it being a great choice as a UI.

    Upcoming Live Mesh Applications can use vanilla Ajax or Silverlight Web Applications

    Jonas Follesoe has a great article on creating a Silverlight application in the "cloud".  Furthermore, this also moves the "fit client" (i.e., Adobe AIR) rumor from a probably to highly likely for Silverlight 3.  I can't stress how much different this is from other cloud computing initiatives by the other big players.  Microsoft has an entire UI technology that differentiates itself from simple data storage like Amazon and it has the power of mature platforms like SQL Server, SharePoint and Office running some of the service offerings. 

    "No current player in cloud computing has this combination of a mature development framework (.NET), desktop-like UI (Silverlight), mature services (SQL Server, SharePoint, Office) and data storage"

    What is really nice about Microsoft's initiative is that going from an idea or business concept to going live on a fully scalable framework that can reach millions is really simple now.  During web 1.0, a lot of money had to be invested in the web infrastructure and this is why startups that were global had to raise tens of millions of dollars to just start up.  With web 2.0, hardware became cheaper and a lot of companies actually could afford to completely outsource all of their server maintenance to a host provider.  A very good example of this was YouTube, who at the time of being bought by Google had approximately 300 servers on RackSpace.  With Web 3.0/cloud computing, this is further abstracted as you are not hosting on "servers" from a development perspective.  As a cloud developer, you are writing these services and they are materialized somewhere on the server but you don't really care about it.  Not having to worry about OS/hardware intricacies directly obviously makes creating applications much faster.

    SQL Server 2008 R2/2010

    SQL Server 2008 was released last year and not many additions were made to the tools which are largely based on the tools rewritten for SQL Server 2005.  For those that work with the full SQL Server stack, it is a lot more than just a place to store your data.  SQL Server comes with rich Busines Intelligence, Reporting, Data Transformation capabilities, etc.  A lot of competitors and non-database vendors have moved ahead of Microsoft in the end user tools area.  Microsoft tools are largely geared towards the developer and this needs to change.  Some of the examples we see that Microsoft is seeing the pressure in this regard is the new user friendly Report Builder in SQL Server 2008 or the new self-service Business Intelligence application that Microsoft is planning for the next version of SQL Server, codename Kiliminjaro/Gemini.  I think Microsoft can add Silverlight in key areas of SQL Server and catch up or pass competitors in these areas.

    Charts & Graphs (make them interactive with Silverlight 3)

    You can make pretty charts in SQL Server 2008, but wouldn't it be cool if they were Silverlight based and highly interactive?

    SQL Server 2008 currently allows you to create rich reports using Dundas Visualizations.  These visualizations are nice but they are highly static (no animations or interactivity).  Competing vendors like Panorama have added Flash charting capabilites to their end user reports which are animated, interactive, spacial, etc.  This is an area where I see Silverlight being added to enhance products like Reporting Services, Report Builder or PerformancePoint Server.  That would be a real powerful addition to the SQL Server stack.

    RIA charts for your data

    Interactive Dashboards

    If you have done any kind of business intelligence development, dashboards are a great way to present a huge mountain of data in an easy-to-understand way.  There are different types of dashboards with distinctions on their intended audience (i.e., executives) or their functionality (i.e., what-if scenarios).  There are products by other vendors that can tie to SQL Server data and do this already.  One great product is offered by Business Objects called XCelcius .  This product allows executives or senior management to answer questions like, what happens to my margins if the cost of fuel goes up 20%?  The person can get the answer immediately and not have to drill down or reference other reports or data sets.  It is real powerful information.  Evolving a product like this into Silverlight makes perfect sense.

    What-If profitability analysis in Business Objects XCelcius (Click the picture to try the demo out) 

    You can write applications like this right now in Silverlight and tie it via services to SQL Server.  However, this requires a significant development effort.  It would be much easier if this were a simple drag and drop feature inside SQL Server Report Builder.  Adding Silverlight 3 in key places to SQL Server can bring the data to life and make it a lot easier for end-users to consume, analyze and deliver insight.

    XBOX 360 & Zune

    The XBOX project is finally starting to pay off for Microsoft.  While it is being outsold by the Wii, it is beating the Sony PS3 handily.  The XBOX 360 has probably one of the best online experiences and the online arcade is great.  It is the only major console that allows hobbyist developers to add their own games via the XNA Framework.  The concept of Microsoft spreading .NET everywhere rears its head here.  Recently the 3.0 version of the XNA framework allows developers to publish their games to the Zune as well.  While it is nice that hobbyists can post their games on the XBOX arcade (after it is verified by the community) and make some money off of the game, they are still geared towards the young male audience.

    Apple has perfected the micro/casual game devliery and micro payments on the iPhone

    The iPhone market has really opened up the ability to deliver a new genre of games to the mobile market.  These games are simple and they cost usually very little compared to large console alternatives.  Apple has a huge opportunity here and is gearing up to take on Nintendo, Sony and Microsoft in the gaming market from a different angle, and there are some articles already creeping up about new GPUs and multi-core firmware which could add significant processing power to the iPhone.  On the web you can see sites like http://www.miniclip.com or http://flashgames247.com/ that get millions of hits per year that target the casual games.  If you have an iPhone or have visted these sites, these games are not really complex, offer any revolutionry AI or have breathtaking graphics.  However, these games do provide one key feature and that is delivering quick entertainment on the spot.  Furthermore, casual gaming has a much larger audience than your 12-28 year old male that can include families, older generations and - dare I say - women :)

    In Part 1 of the series, I wrote about Silverlight 3 heading for mobile devices.  Couple this with the Azure framework and you have a technology that can be used to compete with Apple and in the casual gaming market.  Look at how popular games like Rock Band or other party games bring families and/or friends together.  These types of casual games that can be delivered to the user via the XBOX brand have a huge potential.  Silverlight 3 is gearing up to be faster via rendering, hardware acceleration and adding 3D support.  Microsoft is one of the leaders in the gaming arena and with the Xbox brand name, it can expand its market into micro/casual games with Silverlight 3.

    "Silverlight 3 as a potential gaming framework is a perfect alternative to the current Apple iPhone model that can reach audiences on the web, Xbox 360, Zune and mobile devices."

    Note: In Part 4 of my series, I will look at how Microsoft shapes up competively against Adobe and Apple in this space.

    Windows Mobile 7

    Windows Mobile is one of the less successful product lines being offered by Microsoft.  In terms of innovation and market share, it is far behind the leaders.  Even when Microsoft is not a leader in the mass-market, it makes up for it in the corporate market but not for mobile devices.  Blackberry is way further in the game.  I made the jump as well.  I moved from my Windows Mobile 6.x phone in favor of an iPhone recently and love it.  Having said that, Windows Mobile 7 is promising to be multi-touch and feature a full browser and essentially compete with the iPhones and BlackBerries of the world.

    Silverlight fits the mobile world real well.  Anyone who has an iPhone has enjoyed the ease and power of the AppStore. For users, it's great.  You have access to thousands of applications which are very reasonably priced (fall into the micro-payment category).  However, for developers and app publishers, it's a whole different game.  Apple only provides SDKs on the Mac platform.  You have to program in their language/framework and they JUST recently lifted the NDA on being able to talk about iPhone programming....a big WTF :)  Apple also vehemently opposes Flash to be installed on the iPhone.  Many people wrongly assume it's a technology obstacle.  It's more of a "owning everying on the iPhone" model.  If Flash can be run on an iPhone and I come up with a stupid FlashLight app for $.99, Apple doesn't get its cut and you also bypass the "store firewall" called iTunes.

    Some screens of a Windows Mobile 7 Theme (from screens that were leaked)

    Silverlight on a Windows Mobile 7 platform can do a couple of big things: by providing an open development platform analogous to the AppStore and enabling many web apps to be run on a mobile phone.  If Microsoft pursues this route, they can very easily gain a lot of users.  That is one of the nice things currently about Windows Mobile.  You can go out to a third party site and download an application and off you go.  It does sacrifice in ease of use because of needing to install the application while being connected to your PC.  Silverlight 3 being a web plug-in obviously changes all this.  Furthermore, it was announced during the PDC 2008 that Silverlight Mobile will run off of the Silverlight desktop codebase. 

    "Silverlight 3 is a very attractive framework as you write the code once, and it works on mobile, desktop and fit client applications all at once."

    In the near future with all of the XAML based frameworks (WPF, Silverlight, Microsoft Surface) integrated into a single XAML codebase will be a huge productivity boost.  Imagine having to write one set of code for your application and you can automatically distribute it to the web, desktop, Azure cloud, mobile devices and multi-touch screens.  That is a very powerful concept that Microsoft can potentially hold has as their ace card.

    Office Web

    I saved the least interesting concept for last (least interesting at least to me).  Boxed software is actually facing a huge crossroads now.  Software like Office (Word, PowerPoint, etc.) and Photo Suite (Adobe PhotoShop) have traditionally grown over the years by throwing in more and more features.  Over the last few years, people have been asking themselves, what am I paying for when I only use 20 features?  For me, a couple of real examples actually re-enforced this point.  I was on a website a while ago where you selected the features you need from MS Word.  Over 70% of these features I never heard of or knew what they did.  After you were done selecting, the website told you what version of Office you could get by with.  After the quiz, the site recommended Office 97/2000.  As you can see, the recent versions are simply feature-gloat and don't really add anything to the normal users. Another example is from a study of people who were self-described "Office Word Gurus". These people were from publishing backgrounds, etc.  The study found even self-described power users only really used about 25 core features of the entire product.  This obviously goes on to show that these traditional feature-gloat software needed to become simpler and cheaper to use if they want to remain relevant with casual/infrequent users.

    Google has been quick to jump on this potential and have released Google Docs, a marketed free alternative to Microsoft Office.  I personally think it's neat and simple to create documents pretty fast and access them from anywhere.  It's not enough to replace a Word processor for me (I use OpenOffice 3.0 by the way).   Adobe has done the same has placed some of the core features on the web of the graphing suite.  Microsoft is late to the game (as always).  However, they are going to roll with "Office Web" soon.  This is going to be a web version of the Office Suite and live in the Azure Cloud utilizing a lot of the Office Services in Microsoft data centers.  What can potentially make the Office Web product a lot nicer is the UI technology behind it.  Having a Silverlight based UI is simply a lot better than just a HTML/Ajax UI.  This is where I think Silverlight 3 can be used to enhance the product.  Furthermore, it can also spur further adoption of the Silverlight framework.  Microsoft has made the right decision in not REQUIRING Silverlight for Office Web.  However, Silverlight will enable some additional content and improve things like rendering.  Note:  Office Web is not out yet formally and neither is Silverlight 3.  This is why I am guessing this will be based on Silverlight 3 rather than Silverlight 2.

    Office Web (Word) shown at the PDC 2008

    Summary

    As you can see, Silverlight 3 has the potential to spread throughout the Microsoft platform like a virus -- just like .NET started out with a wimper back in 2002 and now it's in every single API that Microsoft releases.  I am willing to bet that Microsoft is already implementing a lot of these ideas and using the power of Silverlight as a web/cloud/mobile/desktop UI to enhance the funtionality and competitiveness of their products.  Microsoft stands uniquely positioned to take advantage of Silverlight because of their deep platform of products.  While Silverlight 1 and 2 were simply playing catchup to Flash/Flex,  Silverlight 3 will be different. The upcoming spread of Silverlight version 3 and beyond across Microsoft products will become an important piece not only to the users but to developers as well who will be able to take advantage of the numerous features the framework will provide.

    Note: In Part 4 of the series, I will take a look at what this means for Silverlight vs Flash/iPhone.

     

    kick it on DotNetKicks.com
    Posted: Dec 30 2008, 07:47 by Bart Czernicki | Comments (6) RSS comment feed |
    • Currently 0/5 Stars.
    • 1
    • 2
    • 3
    • 4
    • 5
    Filed under: .net | Silverlight | Silverlight 3
    Tags:
    Social Bookmarks: E-mail | Kick it! | DZone it! | del.icio.us