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
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 ?
http://www.ayende.com/Blog/archive/2007/05/27/Reflections-on-the-Naked-CLR.aspx
Just found what I was looking for : http://www.backgrounmotion.com
Ooops, works better with a 'd' :)
http://www.backgroundmotion.com
Did you mean?
http://www.backgroundmotion.com
I am not following the connection
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.
Comment preview