views:

261

answers:

2

This question contains a lot of background information, to make sure you fully understand why we are looking at these technologies.

The question is basically this:

For a large, spreadsheet-type, module that we need to develop for our webmodule for our application, are there any pitfalls we should know about if we decide to use Silverlight for it?

Issues we already know, and don't need any discussion/reminders about:

  • We're aware of the problems around using a plugin-type solution, which may or may not be installed on the users machine (and in some cases, probably can't be installed). These risks needs to be mitigated, but we're aware of them. Please don't get hung up on this.
  • We're a .NET company, so while ruby on rails and lots of other different platforms and architectures are good for this solution, they are not in the scope of the decision here. We have lots of code already written in .NET that we need to take advantage of, otherwise the project will never be finished regardless of platform.

Background

We have a web module for our application with employee-related information and some input forms. Our Windows desktop application is mostly a department leader type of application, to manage employees, but the web module contains mostly employee-centric functions. The web module contains mostly report-type webpages, to list information from the system, or input-forms.

The module we need to add now is more of a heavy spreadsheet type application. You change something one place, and something changes somewhere else, like sums, what is enabled/disabled, etc.

We know we can manage all of that with AJAX, but another issue here is that the application will potentially load a lot of database data in order to put the data in front of the user, and with a AJAXy solution, we're afraid that the request/response method here will have to reload quite a lot of information on every request, even to respond to seemingly easy questions.

A way to mitigate that would basically be to load information into a Session-object or similar, but that's a big no-no, so we'd rather not do that. This is a multi-user module, and some of the data is rather static, but some of the data is also going to have to be refreshed from time to time, so if 10 users loads a lot of data into the session, that's going to be a pretty big memory-hit.

We will be using ASP.NET (MVC) for this if we choose to go this route, that is, developing the module in pure HTML and similar technologies.

Then we looked at Silverlight, and would then load all the information down into the Silverlight application on the client. It would hold the current state, and would only need to touch the database to refresh some of the information, some of the time, instead, as we think the request/response model with ASP.NET (MVC) would work, on every little request.

But, since we have only done minor things with Silverlight, we're not that experienced with it, and we're afraid that some assumptions we might have, stated or unconcious, turns out to be wrong or flawed, which will make this project impossible or very hard to manage at some point.

For instance, just to take an example, is there a limit to how much memory the Silverlight application is allowed to load (I know, if I have to ask I can probably not afford it), for instance if there is a limit on 10MB, then that would be nice to know about before we're midway and start to load the really heavy data.

To make it simpler to give examples, let's just assume we're building a spreadsheet, that has so much data, that for the simple "changed a number here, what else changed", too much data from the database has to be loaded for a proper request/response model to be used, and if we move the entire thing to Silverlight, what will make that project hard or impossible?

Knowing about such things would at least give us the ability to consider if the price is acceptable.

In short, why should we not use Silverlight for this and instead go for ASP.NET (MVC)?

And again, "use Ruby on Rails instead", is not really an answer here. The options are ASP.NET (MVC) which we have experience with, or Silverlight which we don't but can gain.

Of course, if Ruby on rails, given that we'd have to start pretty much from scratch infrastructure-wise, and have to learn a new programming language, and framework, and download and learn a new IDE/tool, if it would still allow us to cut the development time in half, then please give us some information about how that might work, but I daresay that won't really happen here.

+1  A: 

For a rich interface as you've described, I would definately go with Silverlight or Flash rather than a html/javascript/ajax solution.

These technologies make for much better and consistent interfaces across platforms, you can buy in various components to speed things up and support things like copy-n-paste and code in a more structured way.

Another element is skills, if you have the skills to achieve it in a particular technology, then go with that.

To the answer you question the best way I can; you should not use silverlight if you decide to use flash.

HTH

Mark Redman
We're pretty sure that Silverlight will give a far better user experience, and the model of development is closer to Winforms, that we already know, the purpose of my question is that I hope someone will tell us things like "Oh, everyone knows you cannot load more than 10MB of data in Silverlight", or similar boundaries that we might not know about. Of course, I rather hope there aren't any, but if there are, it's best to know to begin with. We already have an old version of the module that fell prey to such a "oops, what do we do now" type of problem and runs horribly slow because of it.
Lasse V. Karlsen
I guess you could load a lot of data into the components you're using/built to see if they support it as well Silverlight itself. Agreed you still need real world experience etc.
Mark Redman
+2  A: 

You should know that Silverlight (version 3.0) does not support any printing whatsoever, which to me sounds like a whopper of a showstopper for you (sorry, I couldn't resist). The good news is that full printing support has been added in version 4, but that is still in beta. Rumours say it should be out before the summer if everything works out according to plan, so if that fits with your roadmap I would use SL4 right from the start.

There are no memory limitations in Silverlight, but for the local storage (IsolatedStorage) mechanism there is a default limit of 1MB. But you can easily get around that by asking the users permission to increase the local storage space when he/she starts up the application. More on that here: http://tinyurl.com/ydwr49w

(Edit) Aside from the missing printing functionality that will be fixed in SL4 I cannot see any problems with your scenario. I would easily take the Silverlight route if I were you, especially since you already have extensive knowledge of .NET/C#.

Henrik Söderlund
That's good to know, but I don't foresee any big problems with that. We have a web application that will surround the Silverlight application, so adding reports to other parts of the site is not a problem. Good to know though, I'll make a note of it for our decision meeting. Thanks!
Lasse V. Karlsen