Problem domain – the area which is being examined in order to find a solution. For example; an ecommerce shopping engine’s problem domain contains areas such as products, a shopping basket and a checkout NOT areas such as warehouse product picking or postal delivery logistics.
NHibernate - NHibernate is a mature, open source object-relational mapper for the .NET framework. It's actively developed , fully featured and used in thousands of successful projects.
Fluent NHibernate - Fluent, XML-less, compile safe, automated, convention-based mappings for NHibernate.
What is the point of these three definitions?? Well having read my MVC books, I was in a development mind shift mood and as such decided to reflect on key development areas/ tools I have successfully been using for many years to determine their value within a TDD & MVC approach.
Over the years Object Relational Mappers (ORMs) have become more common and have made significant progress in their efficiency and usability. To date I have never felt the need to use them due to having re usable data layer plumbing and enjoyment of hand crafting business objects. However, is this approach truly spending time on the problem domain?
Yes – because valuable time is being spent ensuring the business objects are of the correct shape to solve the problem domain.
No – because value time is being spent on writing CRUD operations for the business objects.
To date I have not had any timeframe/ time cost problems with hand crafting business objects. However, is there now the opportunity to improve timeframes/ time costs??
No – the learning of new frameworks takes a significant amount of time to not only concept prove but to implement correctly.
Yes – because the currently available tools and approaches have long term timeframe/ time cost savings that are re cooped after a few projects.
What tools and what approaches am I going to adopt??
The TDD & MVC books detail an approach which focuses on strictness in identifying/ testing the problem domain. With which comes quite a lot of extra work with authoring both test projects and the actual software projects. However, the resulting software development aims to deliver a more verified, validated and robust product.
So where can I now save some time? An ORM to produce business objects with all CRUD … enter Fluent NHibernate which, as with MVC, adopts the convention over configuration design paradigm out of the box. So based on convention (stemming from the database) I can ensure the business objects will appear as I would like without spending time hand crafting.
The steep learning, hopefully beneficial, learning curve begins :)
Back to the TDD & MVC Adventures landing page