Ayende @ Rahien

Refunds available at head office

You need to control the stack

I have a fairly strong opinions about the way I build software, and I rarely want to compromise on them. When I want to build good software, I tend to do this with the hindsight of what is not working. As such, I tend to be... demanding from the tools that I use.

What follows are a list of commits logs that I can directly correlate to requirements from Rhino Security. All of them are from the last week or so.

NHiberante

  • Applying patch (with modifications) from Jesse Napier, to support unlocking collections from the cache.
  • Adding tests to 2nd level cache.
  • Applying patch from Roger Kratz, performance improvements on Guid types.
  • Fixing javaism in dialect method. Supporting subselects and limits in SQLite
  • Adding supporting for paging sub queries.
  • Need to handle the generic version of dictionaries as well.
  • Override values in source if they already exist when copying values from dictionary
  • Adding the ability to specify a where parameter on the table generator, which allows to use a single table for all the entities.
  • Fixing bug that occurs when loading two many to many collection eagerly from the same table, where one of them is null.

Castle

  • Fixing the build, will not add an interceptor twice when it was already added by a facility
  • Generic components will take their lifecycle / interceptors from the parent generic handler instead of the currently resolving handler.
  • Adding ModelValidated event, to allow external frameworks to modify the model before the HBM is generated.
  • We shouldn't override the original exception stack

Rhino Tools

  • Adding tests for With.QueryCache(), making sure that With.QueryCache() can be entered recursively. Increased timeout of AsyncBulkInsertAppenderTestFixture so it can actually run on my pitiful laptop.
  • Adding support for INHibernateInitializationAware in ARUnitOfWorkTestContext
  • Adding error handling for AllAssemblies. Adding a way to execute an IConfigurationRunner instance that was pre-compiled.
  • Will not eager load assemblies any more, cause too many problems with missing references that are still valid to run

Without those modifications, I would probably have been able to build the solution I wanted, but it would have to work around those issues. By having control the entire breadth and width or the stack, I can make sure that my solution is ideally suited to what I think is the best approach. As an aside, it turn out that other people tend to benefit from that.

Comments

Stiiifff
01/24/2008 05:12 PM by
Stiiifff

What if you cannot ? What if you have to stick with standard Microsoft .Net libraries ? :)

Let's say you're allowed to use the latest .Net 3.5 libs, Ajax extensions, Enterprise Library, Software Factories, or any of the P&P guidances, but cannot use any 'non-Microsoft' libs ... how would you design a 'classical' web application that would pass your 'good software' certification ?

Ayende Rahien
01/24/2008 06:17 PM by
Ayende Rahien

http://www.ayende.com/Blog/archive/2007/05/27/Reflections-on-the-Naked-CLR.aspx

Stiiifff
01/25/2008 09:30 AM by
Stiiifff

Just found what I was looking for : http://www.backgrounmotion.com

Stiiifff
01/25/2008 09:32 AM by
Stiiifff

Ooops, works better with a 'd' :)

http://www.backgroundmotion.com

Ayende Rahien
01/25/2008 09:32 AM by
Ayende Rahien

Did you mean?

http://www.backgroundmotion.com

I am not following the connection

Stiiifff
01/25/2008 10:01 AM by
Stiiifff

This is a sample app promoting good design using Ms technologies mainly ... see here:

http://andrewpeters.net/2007/06/19/backgroundmotion-code-sample/

For scenarii where you just 'cannot' use your favorite open source libs (customer doesn't want) ... it still looks pretty good.

Comments have been closed on this topic.