I Would like to start a small project using MVC, NHibernate and maybe the sharp architecture to get familiar with the techs. With no experience with all above, should I include sharp architecture along with MVC & NHibernate? If yes, any good site / tutorial for the beginner learning sharp architecture along with MVC & NHibernate? Appreciate your opinion.
If you haven't had any experience of either MVC, NHibernate or the concepts in the Sharp architecture such as inversion of control then you've got a pretty steep learning curve ahead of you. It might be easier to start out with each one in turn; learn a little about the MVC pattern, then do some mapping with NHibernate and finally examine how it all fits into the Sharp architecture. I haven't seen many websites detailing the Sharp architecture other than the Wiki so I'm sorry I can't really help much on that front, however a good grounding in MVC, NHibernate and Castle Windsor IoC will give you a good head start. Have fun!
For my first MVC/NHibernate project, I started with Sharp architecture and looking back I think it was a mistake:
- Too Many New Things: You're already learning a LOT with just MVC and NHibernate, and adding in all of the sharp architecture technologies (design by contract, specific testing patterns, IOC, etc) only complicates things.
- No Abstraction: Sharp architecture does not really abstract or hide away anything (like rails does). In the end, you still need to learn all the technologies that it uses, and there is a lot of up front knowledge/reading required. I found myself stopping a lot to look up a technology concept.
- Confusion of Tech: I began getting confused about which technologies were part of MVC and which were part of sharp architecture. I would see an attribute above a method and wonder which framework it came from.
All that said, I think sharp architecture is a GREAT example of how to use all of these technologies together, but I wouldn't start it without already knowing them.