I have been working on a project that integrates existing line of business systems together to provide customers with a single point of entry into the organization through the default website. Providing customers with targeted information is obviously a benefit to the customer. Each customer that is able to access a corporate site and easily retrieve pertinent information to them not only makes them a happy customer, but a customer that will sell your services to potential customers. Therefore, making the customer happy at first point of entry is obviously critical to an organizations success.
As the Senior Solutions Developer at my firm, I have to think about performance, interoperability, scalability, integration, and business requirements. It is an exciting position and requires quick thinking with lots of research. Currently, I am working on building Windows Communication Foundation (WCF) based services to integrate with our internal line of business systems and web controls in Microsoft SharePoint Server 2007 (MOSS 2007). It would allow the customer to access the targeted information expressed above. Whenever one thinks about integration, database access is never that far behind. Most usually requires it and it certainly is the case with me, thus the reason for my current blog post.
While creating the data access layer in WCF I was forced to think about how to develop the layer that would subscribe to best practices and provide for both Agile Software Development and Rapid Application Development without compromising quality of code. A fellow Senior Solutions Developer told me about the open-source NHibernate, which provides an ORM solution to building the data access layer. He told me that many J2EE developers integrated with this solution offering. I became very interested and so I started researching why NHibernate is better than the Microsoft Enterprise Library 3.1 Data Access Block published by Microsoft in May 2007. The result was quite stunning.
The Enterprise Library Data Access Block is great for quick access to the underlying data source and provides the required levels of abstraction; however, it fails in building stored procedures that models a normalized relational database that is something the developer would need to create. The typical Select, Insert, Update, Delete stored procedures are usually required for this type of model. I have found it shocking. NHibernate not only provides the appropriate levels of abstraction that conforms to best practices, but it also handles what the Enterprise Library lacks, the capability to dynamically build SQL that performs the required actions to normalized databases. NHibernate is a data access layer that can truly build high quality code that accesses the data access layer. It provides us with what we need and best of all…it is free and available from the open-source community. Visit NHibernate at www.hibernate.org or access the NHibernate Best Practices page on the code project website (http://www.codeproject.com/aspnet/NHibernateBestPractices.asp).