CSLA .NET 3.8.0 released and available!CSLA .NET 3.8.0 released and available!
Old forum URL: forums.lhotka.net/forums/t/7954.aspx
RockfordLhotka posted on Thursday, November 05, 2009
CSLA .NET version 3.8.0 is now released and is available for download.
For Windows Forms and Web Forms users there are not any major new features, but some of the bug fixes may be valuable. Upgrading from 3.7 to 3.8 should be painless for these UI types (as well as XML services and workflow interfaces).
If you use WPF or Silverlight, you will almost certainly want to take a look at the features in 3.8. The downside is that there are several breaking changes in the XAML controls, but the upside is that the new XAML control implementations are far superior to previous versions. Controls impacted include:
- PropertyStatus – now supports a “pull model” so a UI control can bind to properties of PropertyStatus, rather than having PropertyStatus directly manipulate the UI control’s IsReadOnly and IsEnabled properties. Also in Silverlight, PropertyStatus now makes use of the Silverlight 3 binding capabilities.
- InvokeMethod – can now be triggered by any UI event, and can invoke a couple different method signatures on the DataContext. Also, MethodParameter is now bindable. The end result is that InvokeMethod provides really good support for both the CslaDataProvider model and the MVVM design pattern.
- Execute – a new control that is a trigger action that works in the Blend 3 Interactivity model. This is very similar to InvokeMethod, but works with the Blend 3 scheme.
- ViewModelBase<T> – provides a base class to make it easy to build a viewmodel class when using the MVVM pattern.
- ViewModel<T> – provides a base class to make it easy to build a viewmodel class that works with InvokeMethod/Execute when using the MVVM pattern.
- CslaDataProvider – the ObjectInstance property is now bindable, so it is possible to create master-detail (parent-child) relationships in the UI between different data provider controls.
See this blog post for more MVVM information.
Other important or interesting features include:
- Support for System.ComponentModel.DataAnnotations validation attributes. This blog post has information about the change.
- A CSLA .NET specific model binder for ASP.NET MVC, enabling the use of CSLA .NET rule methods and DataAnnotation validation attributes in the same object, with the UI displaying combined results.
- Performance enhancements for MobileFormatter, including the use of binary XML. This forum thread has some great comparative information around binary XML and compression.
- Better support for altering the behavior of IsDirty when using managed backing fields. This blog post has good information about using the changes.
- All the samples have been updated to build with 3.8.0, and the MVVMexperiment projects for WPF and Silverlight illustrate most of the new MVVM features.
There are also numerous bug fixes, including a solution to the memory leak issue with BusyAnimation and a null reference issue with LINQ to CSLA. See the change logs for more details about bug fixes.
Jaans replied on Friday, November 06, 2009
It would appear that you need to have ASP.NET MVC installed in order to build and reference CSLA 3.8.0.
http://www.asp.net/mVC/download/
- Jaansrfcdejong replied on Sunday, November 08, 2009
I haven't tried it yet, but i hope it isn't required to add the MVC assemblies when deploying a csla application to customers. Please make it optional like a csla.mvc project / assembly.RockfordLhotka replied on Sunday, November 08, 2009
You need the MVC framework to build CSLA, but not to deploy it.
Remember that .NET only loads assemblies when a type or method or metadata
from that assembly is accessed at runtime. If you never use the
CslaModelBinder type you'll never load that part of Csla.dll, and so nothing
would try to access any of the MVC assemblies either.lukky replied on Monday, November 09, 2009
Hi Rocky,
Is this dependency on MVC something new in 3.8 ? Sorry if I sound like a knob for asking, but I'm still using 3.6 on my current project, and haven't had time to try 3.8 yet, and I don't recall ever having to install the MVC framework.
I understand the difference between needing it to build CSLA vs. deploying it, but still, I'd much rather not clutter my build machine with unnecessary stuff.
Are your plans to leave this as is, or is there a possibility that you'd make the stuff that depends on MVC into a separate optional assembly ?
Regards
RockfordLhotka replied on Monday, November 09, 2009
At this point changes to 3.8 are bug fix only, all my attention is on 4.0.
This issue is temporary - ASP.NET MVC is part of .NET 4.0 - so you'll have it cluttering up your machine soon enough regardless :)
If you really don't want to install MVC you can make two simple changes to the CSLA project:
- Remove the \Web\Mvc folder from the project
- Remove the Mvc reference from references
lukky replied on Monday, November 09, 2009
RockfordLhotka:
This issue is temporary - ASP.NET MVC is part of .NET 4.0 - so you'll have it cluttering up your machine soon enough regardless :)
Hahaha... I almost spat my coffee in the screen !
Thanks for the workaround.
Jimbo replied on Thursday, November 12, 2009
Can we have an info page or summary matrix of breaking issues and essential changes for upgrading between different versions - as distinct from incremental changes. For example if I was to update an application based on the 2.1.4 library to the latest. I don't need to use all of the intermediate advancements, but may want to incorporate some latest Net 3.5 / csla features - such as workflow, but also not want to have to re-build all existing classes etc.
jimbo
RockfordLhotka replied on Thursday, November 12, 2009
It would be really cool if someone wanted to go through the
change logs and create such a matrix, yes!
From: Jimbo
[mailto:cslanet@lhotka.net]
Sent: Thursday, November 12, 2009 7:07 AM
To: rocky@lhotka.net
Subject: Re: [CSLA .NET] CSLA .NET 3.8.0 released and available!
Can we have an info page or summary matrix of breaking
issues and essential changes for upgrading between different versions - as
distinct from incremental changes. For example if I was to update an
application based on the 2.1.4 library to the latest. I don't need to use
all of the intermediate advancements, but may want to incorporate some latest
Net 3.5 / csla features - such as workflow, but also not want to have to
re-build all existing classes etc.
jimbo
Copyright (c) Marimer LLC