Sharp Architecture
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.
First thing's first, download the 1.6 release from
http://github.com/codai/Sharp-Architecture/downloads
Preparing the Development Environment
Examining the Northwind Example Project
Examining the S#arp Architecture Class Libraries
Tutorial for Developing with S#arp Architecture
Visual Studio Templates and Code Generation
Additional Resources and Support
Discussion Forum (very active!)
Suggested S#arp Architecture Best Practices
Common Development Problems and Exceptions
Not So Frequently Asked Questions (multiple DBs, interceptors, medium trust, etc.)
Using S#arp Architecture with NHibernate.Search
Books and Further Reading Materials
Source Repository and Other Project Links
Source Repository on GitHub
S#arp Architecture Landing Page
Latest binaries
movie downloads hi-def
S#arp Architecture Contrib
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.