Even a chimp can write code

Wednesday, April 01, 2009

Silverlight out-of-browser support: What kind of apps can you build?

This is first in my series of technical drilldown posts on the new offline and out of browser support in Silverlight 3.

It is something of a tradition in Microsoft to list out scenarios when a new feature set is being conceived. This practice is by no means unique to this company. I feel that doing so establishes a common baseline and taxonomy which immensely helps as the concept matures and gains complexity. Typically these scenarios are fleshed out in functional specifications.

In this post, I summarize the flavors of apps and scenarios that are enabled by the new offline and out of browser support in Silverlight 3. Most of these are self-explanatory and so using another Microsoft tradition, I will stick to concise bullet points rather than prose. A list similar to the one below in fact was used by our crew when we started our planning for this feature set a few months ago:

Connectedness

Fully disconnected app

  • App has no networking needs
  • Reliance on Silverlight just as an installation vehicle for the app
  • We don’t expect this will be very common

Occasionally connected app

  • App is resilient to network outage
  • Conditionally persists data into iso store or cloud based on network availability
  • This is the sweet spot for our feature offerings and where most of our attention goes

Connected app

  • App uses the offline feature set only for the sticky desktop presence
  • We don’t expect this will be very common

User experience

App behaves exactly the same in browser and out

  • App author wants to deliver the same experience in either case
  • “Try before you buy”, “Get more features upon install” and other such progressively enhanced SKU situations
  • Our data suggests consumers find comfort in apps that – in broad brushes – seem similar OOB as when they did in-browser

App shows different UI in-browser and out-of-browser

  • App author wants to exploit the real estate available in standalone window
  • Browser page could have limited functionality which lights up only upon detach
  • Browser page shows only the “Install” badge and the “real” UI only shows up when launched out of browser

Approach

Porting an existing Silverlight 2 app to run offline/out-of-browser

  • Even though the feature is a new addition to SL3, some SL2 apps can benefit from it
  • Requires no changes to code and no rebuilds
  • Can be done as a post-production step by modifying the manifest and optionally adding icons into the XAP
  • Build disconnected and connected apps, but not occasionally connected

Building a new offline/out-of-browser app

  • Our mainline scenario
  • Leverage everything the offline/out-of-browser feature set and the rest of Silverlight has to offer
  • Build disconnected, connected and occasionally connected apps

In the next post, we will look at the pillars of this feature, starting with the install (a.k.a detach) operation.

Related posts:

Labels: , , ,

Email this | Bookmark this

8 Comments:

  • Fully Disconnected will not be good with Silverlight, the reason is it doesn't have a way to communicate with local database. IsolatedStorage is just too restrictive to be used as a database replacement.

    By Anonymous HireDotNetExpert, at April 1, 2009 at 10:06 PM  

  • Is it supporting MS Sync framework?

    By Blogger Vikram Pendse, at April 2, 2009 at 4:54 AM  

  • The main reason I'm interested in out of browser support is to have a single code base between browser and non-browser applications. We may have apps we expect to run in a browser and then apps we don't expect to run in a browser. We want to use a Silverlight codebase for both experiences rather than Silverlight and WPF.

    By Anonymous Anonymous, at April 2, 2009 at 5:48 AM  

  • I found that a Silverlight navigation application (deep linking) can't run on the desktop. Is that correct? I assume the problem is that the navigation application interacts with the browser. Is there a solution or workaround for the problem?

    By Anonymous David Duey, at April 2, 2009 at 6:28 AM  

  • Vikram: not currently. Are you interested in sync'ing with a cloud service on your own servers or something like Azure Services? I am asking because even if we delivered the client piece, what sort of server stack will customers be using?

    David: sorry about that. We are looking at ways to fix this.

    By Blogger Ashish Shetty, at April 2, 2009 at 1:36 PM  

  • Thanks Ashish,I thought if Silverlight app runs in offline mode [Out of Browser],as we can detect network availability by network API provided,then will it be a solution to put data which is process offline in some temp db like we do in Sync [Local db Cache template]and when it goes online we can push it via WCF service call.Heard of Meshenable SL apps, so i thought it supporting Sync.Well "Azure" is still bit alien for me..learning it :).Thanks.

    By Blogger Vikram Pendse, at April 2, 2009 at 7:55 PM  

  • Out of Browser? Hmmm... I'd really like to do a bandwidth usage bar
    for my users. They can have this on their Win/Mac desktops so they'll not keep going over their limits without knowing!!!! Okay, this is going to require a web service. Azure anyone?

    By Anonymous Anonymous, at April 3, 2009 at 9:46 AM  

  • Fully disconnected application

    hmm...
    Please and must
    expect more of this kind of application...

    write once run anywhere :)

    By Anonymous Anonymous, at April 12, 2009 at 11:18 PM  

Post a Comment | Home | Inference: my personal blog