Castle Windsor 2.5… the final countdown – beta 1 released (and Core, DynamicProxy, Dictionary Adapter)

Well it’s about time. Due to cer­tain events (like me relo­cat­ing to the other part of the world) it’s later than planned but it’s here – beta 1 of Cas­tle Wind­sor 2.5 is avail­able for down­load.

There’s been quite a lot of changes in the release. Not just in the code but in the entire Cas­tle Project.

We migrated from Sub­ver­sion to Git, and you can now access the repos­i­to­ries on github. Hope­fully this will make things eas­ier for any­one who wants to con­tribute fea­tures and patches to get going, and will raise the level of com­mu­nity con­tri­bu­tions to the project (actu­ally it already has, although not as much as I’d like).

We moved from out pre­vi­ous doc­u­men­ta­tion to the new open wiki engine. The doc­u­men­ta­tion is still being migrated and updated but I can say that for Wind­sor the doc­u­men­ta­tion is already pretty com­plete and it cov­ers all the new fea­tures in ver­sion 2.5. The wiki is open for any­one to reg­is­ter and con­tribute, either by proof­read­ing and fix­ing spelling errors, expand­ing exist­ing top­ics or adding new ones.

Also it’s worth men­tion­ing the awe­some work that Andy Pike’s been doing on Castle­Casts. The web­site (built on Cas­tle stack obvi­ously) con­tains free short screen­casts that will help you learn dif­fer­ent aspects of the Cas­tle stack. While most of the scren­casts are ded­i­cated to Mono­rail, Andy recently started cov­er­ing Wind­sor as well. And the best part is – Castle­Casts is an open place for Castle-related screen­casts so if you want to record one, and share your knowl­edge with oth­ers go ahead.

What’s in it – Core (now incl. Dynam­icProxy and Dic­tio­nary Adapter)

Here are some of the high­lights of the release for Castle.Core.dll

  • Castle.DynamicProxy.dll got now merged into Castle.Core.dll (same with Dic­tio­nary Adapter) so now you need to ref­er­ence just sin­gle assem­bly instead of two.
  • Sup­ports .NET 4 (and .NET 4 client profile)
  • Dynam­icProxy has now new kind of prox­ies – Class proxy with tar­get. I blogged about lim­i­ta­tions of this approach, so use this with caution
  • Dynam­icProxy will now let you inter­cept explic­itly imple­mented inter­face meth­ods on class proxy
  • Dynam­icProxy will now let you inter­cept calls to meth­ods on System.Object (ToString, Equals, GetH­ash­Code) – the default Prox­y­Gen­er­a­tionHook will still opt out of this though
  • Dic­tio­nary Adapter per­for­mance improve­ments.  Proxy class are cached so DA no longer tra­verses assem­blies to find type
  • Dic­tio­nary Adapter auto­matic sup­port for Noti­fyProp­er­ty­Changed. EditableOb­ject, IDataEr­ror­Info, and val­i­da­tion capa­bil­i­ties.  Just extend from the interface(s) and fea­ture is enabled
  • Dic­tio­nary Adapter sup­port for cus­tom HashCode/Equals strat­egy so you can bet­ter sup­port per­sis­tence in which and Id usu­ally used for equality
  • Abil­ity to coerce one Dic­tio­nary Adapter into another and/or copy prop­er­ties from one to another.
  • Inte­grated sup­port for Xml/XPath using stan­dard Xml Seri­al­iza­tion attrib­utes – this gives you strongly typed con­fig files (for example)

Plus many more minor fixes, fea­tures and improve­ments. You can see the entire list in changelog.

What’s in it – Windsor

The main dish is obvi­ously Wind­sor, and there are plenty inter­est­ing new fea­tures and improve­ments as well.

And heaps of other smaller improve­ments and gen­eral polish.

Break­ing changes

This is a point-five release, which means it is highly com­pat­i­ble with pre­vi­ous release and upgrad­ing should be pretty straight­for­ward and quick. There are some changes though, and we tried to doc­u­ment all of them in breakingchanges.txt file included in the release. Read the file to see the list of break­ing changes and upgrade path for each of them. If you find any break­ing change not described in the file, or some infor­ma­tion that is inac­cu­rate of miss­ing let us know, so that we can improve that for the final release.

In addi­tion to that also some API was made obso­lete in this release (most notably the old reg­is­tra­tion API) to dis­cour­age users from its usage. It is not going away any­time soon, but it is highly rec­om­mended to migrate code using the now-obsolete API to the alternatives.

What’s next

This is beta 1 release. It means that before the final release no new major fea­tures will be added and no break­ing changes will be intro­duced (unless nec­es­sary to fix a crit­i­cal bug, which is unlikely). This release con­tains only .NET ver­sion of Wind­sor. Ver­sion for Sil­verlight is still in works and will be part of beta 2 release. We’re also work­ing on some sam­ple appli­ca­tions to help you get started using Wind­sor. The sam­ples will be also included in beta 2 release. So far we have a win­forms sam­ple almost ready. If you’d like to con­tribute a web sam­ple feel more than wel­come to contribute.

ETA for beta 2 is in two weeks, if no big issues are found, final release will be out around two weeks after.

Get it, play with it, give us your feedback!

The bits are here, to dis­cuss the release go to our google users group.

Comments are closed.