Plugable Architecture

A major concern while designing the framework was the ability to customize it. The adopted philosophy was: each user should be able to assemble what he/she needs. Many frameworks force their users to live with the burden of a great deal of unwanted features. Usually this brings unnecessary complexity (and thus difficult maintenance) and performance issues. This doesn't happen with DIF. With it, you just have to have what you need. There's also another advantage: you aren't committed in the future with any option you took in the past. At any point in time you can change your customized options to reflect your current needs. Better yet, you can do it easily and without even touch your application code.

As such, the framework was designed to be a set of loosely-coupled modules. These modules are interconnected through an IoC container (read more about it here). This container provides seamless integration between the different modules and separation of concerns.

The following diagram gives an overview of the plug-ins.

DiF IoC bindings.

Here's the full hotspot list.