Pronounced "Sharp Architecture," this is a solid architectural foundation for rapidly building maintainable web applications leveraging the ASP.NET MVC framework with NHibernate. The primary advantage to be sought in using any architectural framework is to decrease the code one has to write while increasing the quality of the end product. A framework should enable developers to spend little time on infrastructure details while allowing them to focus their attentions on the domain and user experience. Accordingly, S#arp Architecture adheres to the following key principles:
- Focused on Domain Driven Design
- Loosely coupled
- Preconfigured Infrastructure
- Open Ended Presentation
The overall goal of this is to allow developers to worry less about application "plumbing" and to spend most of their time on adding value for the client by focusing on the business logic and developing a rich user experience.
Absolutely essential reading is Eric Evans’
Domain Driven Design. For a quick introduction to the subject, see
Domain Driven Design Quickly which is a concise summary of Evans’ classic work. Other useful background material, albeit dated, includes
http://www.codeproject.com/KB/architecture/NHibernateBestPractices.aspx. Although there are major infrastructural changes from the referenced article when compared to the current S#arp Architecture, the general structure is very similar and the background reading is helpful in understanding many of the ideas behind this development foundation.
S#arp Architecture and the NHibernate Best Practices article have been referenced in
NHibernate in Action by Pierre Henri Kuate,
Windows Developer Power Tools by James Avery and
Pro LINQ Object Relational Mapping in C# 2008 by Vijay P. Mehta.
New to S#arp Architecture?
If you're getting into S#arp Architecture for the first time, there's a bit of learning and background materials to digest. This is the place to start! Follow the documentation links below from top to bottom to get a firm understanding of S#arp Architecture and to get yourself fully qualified to develop your own S#arp project.
Additional Resources and Support
Source Repository and Other Project Links
Acknowledgements
S#arp Architecture
attempts to represent the combined wisdom of many software development giants. Included patterns and algorithms reflect best practices described by the GoF, Martin Fowler, Uncle Bob Martin, Steve McConnell, many gurus in the blogosphere and other industry leaders. Many have been personally involved with helping to shape S#arp Architecture’s current form including
Frank Laub,
Kyle “the coding hillbilly” Baley,
Simone Busoli, Jay Oliver, Lee Carter,
Luis Abreu,
James Gregory, and
Martin Hornagold...along with many others who have asked WTF at all the right times. A special thanks to Roy Bradley who was
brave crazy enough to commission me to develop the first version 0.1. Finally, none of this would have been possible and/or applicable without the tireless, unpaid efforts of the teams behind projects such as NHibernate, Fluent NHibernate, NHibernate Validator, MvcContrib, and Castle.