For the most part CSLA .NET for Silverlight is the same as CSLA .NET for Windows. But there are some differences, and I'll try to list the most important ones:

  • Serialization is different, and so you really want to use managed backing fields - otherwise you'll have to do a lot of work to manually serialize/deserialize all your private fields. If you have any private fields in your classes, you have work to do.
  • Serialization is different, and so if you have any Serializable objects that don't inherit from a CSLA base class you'll have to make them inherit from one of the Csla.Core serializable base classes (like MobileObject) or manually implement IMobileObject (which is a pain).
  • LINQ to CSLA is not implemented in Silverlight, so if you rely on the LinqBindingList behaviors you'll need to work around that in the Silverlight side. I can't say when L2C will exist in Silverlight.
  • All data access (data portal usage) is async. This will impact all your factory methods, but not your data access methods.
  • All server interacts are async. This will impact any business or validation rules that talk to the server (via a Command object, etc). These rule methods need to be rewritten to be async rule methods for Silverlight - which is not usually a huge change, but does take some work.
  • Authentication is different, though we tried to mirror most of the .NET concepts. The good news is that authorization is the same.
  • In 3.6 the XAML UI components are unique to Silverlight. In 3.7 I expect they'll be a lot more like the WPF components because Silverlight 3 has element binding.

This forum thread also has good information.

All content and CSLA .NET is Copyright © 2009-2011 Marimer LLC