Definition:
A Cross-Cutting Concern is a concern your application needs to address that is unrelated to your application’s problem domain, and ‘cuts across’ other concerns. Typical examples include:
- logging
- persistence
- security
- error handling
They are usually difficult to decompose from the rest of the system and result in tangled code. Addressing these cross-cutting concerns will add a lot of boilerplate code into your application, increasing both the size and complexity of your code.
To ease the pain of dealing with cross-cutting concerns in our applications, Aspect Oriented Programming (AOP) was born and frameworks such as PostSharp (which I’ve blogged about already) provides an effective way of introducing AOP into .Net applications.