Now that Silverlight 2.0 has been officially released I was wondering if anyone was using it for any line of business apps, for example POS, Vertical Market apps etc. If so how were your experiences compared to an old WinForms app or Web app?
I think Silverlight is going to be huge for business applications. This is some bullet points highlighting strengths of Silverlight as a LOB platform inside the browser. It's something i wrote to help a colleague out who was comparing ASP.NET vs. Silverlight, but hopefully it includes some hints.
Extra Silverlight Functionality
- You can do off line caching of static data using Isolated Storage today - Just serialize your data to JSON or XML and save it locally.
- Stronger tool support for UX - With jQuery you will be writing all the extra UX by hand. Don't know if this is a big deal, as jQuery is really sleek.
- C# over JavaScript - Better debugging and developer experience.
- Support for multiple threads, cross domain networking and sockets.
- Support for local file access - Say you want to do a CSV-file import without having to roundtrip to the server. In Silverlight you can use the FileOpenDialog and read the file content locally.
- Easy portabiliy to WPF
Extra Silverlight Controls
- First batch of out-of-band Silverlight controls will be available at the PDC, and include the following controls:
DockPanel, WrapPanel, ViewBox, Label, HeaderedContentControl, Expander, TreeView, NumericUpDown, AutoComplete, Accordion.
- Scott Gu have hinted that over time Silverlight might get 100+ controls if you count the out-of-band controls released on CodePlex.
- Read more at http://blogs.msdn.com/sburke/archive/2008/09/17/control-freak.aspx
WPF portability
- There are some major differences. The non-UI code should be fairly simple to port to WPF.
- If you don't get too creative with your styling most of the controls ports directly as well. One of the major differences is that Silverlight uses the VisualStateManager instead of Trigger for styling of controls. There is a community project available to add VSM support to WPF to make it easier to port applications. The VSM will be added to a future WPF release to make the two more in-pair.
- You will be able to reuse ALOT of knowledge, design assets and code.
- I did a blog post about porting my Dive Log app (a small one, but highlights some of the issues) to WPF: http://jonas.follesoe.no/PortingTheSilverlightDiveLogApplicationToWPF.aspx (did it in a couple of hours).
Data Entry UX
- Silverlight will make it easier to implement more complex client-side validation rules, making your data entry forms more responsive with less round-back to the server. You can do this using AJAX, but it takes more effort.
- With Silverlight you can get creative and enhance your data entry forms and add nice effects when enabling/disabling parts of your form based on selections earlier in the form.
- You can create cool widgets for your data entry. Ref. the way you set the Air-In/Air-Out in the dive log application by changing the air level in a air tank, instead of just typing a value in a text box.
Visualizations
- You can do a lot of cool things with the jQuery animation API - but Silverlight makes it alot easier to do rich UI's with animations, nice scalable vector graphics etc. For plain ASP.NET you probably have more third-party controls/components to pick from, but for plain charting the Visifire charts are great.
Copy/paste/select text
- I don't like that it's hard to make text selectable/copyable.
- The out-of-box print experience in Silverlight is limiting as well. It will simply print what's on screen. I'm working on a blog post showing how to generate HTML behind the Silverlight component and use CSS for printing.
Search Engine Optimization
-
Guess it depends on your customers requirement. If your data should be searchable you can get around it by having ASPX pages that render the data as HTML behind the Silverlight page when it's first loaded. So your site would be something like ShowCustomer.aspx?CustomerID=10 - Silverlight will show customer 10 in the form, and behind the Silverlight component there is HTML representing the same information. Then you would also provide a sitemap file so that Google knows how to index/find the content of your page. But it would be doable.
If your application is very "application like" it might not make sense as it's hard to create URL's to the different states of your application.
Have a look at this series of articles by Chris Anderson - I know the fella and he's very into this at the moment. He is developing his own business platform on Silverlight.
Edit: Have a look at this MSDN article too: Create Data-Centric Web Applications With Silverlight 2