Stop Coding, Start Configuring

Most apps have commonalities that can be extracted, where generalised solutions can be created, based upon patterns of reusable components. Some examples here are Angular Material, BouncyCastle, and MimeKit. All of the previously mentioned libraries assumes you want to achieve something specific, for then to create high level components, allowing you to solve your problems. This of course is the very foundation of "libraries", "frameworks" and "components". As in; Reusability is king. However, the same is also true for your resulting end app. If you look at your last application, you will find that it has at least some of the following moving parts.

  • It needs to authenticate users
  • It needs to authorise access to its parts
  • It needs to log events
  • Etc, etc, etc

The AOP promise

The promise of Aspect Oriented Programming was that instead of "coding" these generalised parts, you could "apply them as aspects" to your code. Such as the following illustrates.