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.

A bit of history
 
ACA.NET was created about 10 years ago what makes it almost as old as .NET itself. Current version’s number is 7.0.6 and 7.1 is just around a corner. During that time, product was actively developed and validation - in 2005 Microsoft people found it that valuable that a subset of ACA.NET was published for free as Microsoft Enterprise Library (http://msdn.microsoft.com/en-us/library/ff648951.aspx) - well-known library packed, very popular between the devs around the world. Honestly, I’m impressed. Currently, ACA.NET developed separately from EntLib, but it has been re-worked to use it as its base (currently it uses 4.1, but ACA.NET 7.1 will use EntLib 5.0).
What the benefit?
 
There’s no point in going through all the features of ACA.NET, as you can easily find the on KX. Plainly speaking, ACA.NET brings you all the components you need on 90% of .NET custom development projects, 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

Yes, Microsoft has proposed some ways to deal with all those points, but usually to adapt them to high-performance industry conditions, you need to carefully wrap / re-do them in an efficient way and here Avanade made it for you. Those building blocks have been successfully proven on projects for over 800 clients. Do you need a better recommendation?

Personally, I like making smart stuff. I have tons of ideas about how to make my own validation framework, workflow engine, O-R wrapper. And who knows, maybe I’d even do better than what Avanade guys have proposed - but how much time would I need for that? Would I have an opportunity (and proper conditions) to test it out? It’s far, far better to focus on adapting those building blocks into specific client conditions and adding actual business logic than on reinventing the wheel.
 
I seriously encourage you to give it a go. Re-use. Buy, if you have to. It’s far more efficient that way. I may publish some info about pricing of ACA.NET and selling it as Accenture soon.