The entire request and response cycle in Nooku is pretty straightforward, but there are many parts to the puzzle and it is important to understand how all of the bits fit together.
Think about the request/response cycle within HTTP:
We can think about the above in terms of MVC:
Nooku is built to model this same process flow through the entire framework.
Now think about how in Apache you can load in modules. Modules allow you to extend the existing functionality of Apache, without modifying its core underlying code. Modules can do all sorts of things, from handling routing (mod_rewrite) to compressing the output sent to the browser (mod_deflate). Nooku employs the same techniques by using behaviors.
Behaviors can be used to modify the input and output of the controller, model or the data layer without having to modify the underlying code. This becomes incredibly powerful, as one can affect the way a system operates just by wiring in some behaviors, behaviors that can be re-used amongst lots of different projects too.
Nooku uses behaviors for all sorts of tasks, from automatic alias creation, to caching and activity monitoring.
The initial request that is received by the web server is routed to a dispatcher within the application component.
A dispatcher is responsible for: