If you work for global company that has already completed thousands of projects, you should be aware that most likely someone has already done project similar to your own. It may be someone on the other side of the planet, but still, there’s some experience to be collected and some assets that may be re-used. The more unique project is, the smaller is the chance, but if we’re speaking about technical architecture, there are plenty building blocks to be re-used.
That’s what our colleagues from Avanade thought, when they decided to create one common .NET application architecture package - ACA.NET (http://www.avanade.com/Documents/Resources/BTS/Application-Development/ACA_NET7.pdf). Usually I’m quite skeptical about that kind of generalization, but the more I learn about ACA.NET, the more promising it looks like.
- web client view engine (based on MVCP)
binding and dictionaries
- web farm support
- authorization, authentication & encryption
- common data layer (RDBMS-agnostic)
- validation and business error servicing
- error handling and logging