RIFE combines request-based and component-based approaches to Web application development:
Request-based frameworks [...] use controllers and actions that directly handle incoming requests. Each request is fundamentally stateless. With the introduction of server-side sessions, a certain degree of statefulness has been achieved. The different frameworks basically differentiate themselves by the way they map logic to URLs and how data is structured and provided to the developer.
Component-based frameworks abstract the developer away from the internals of the request handling and encapsulate the logic into reusable components. [...] This development model is very similar to the features offered by desktop GUI toolkits. The different frameworks basically differentiate themselves by the provided component API and how components are combined together.
[...] Instead of mapping actions and controllers directly to the request, RIFE provides a component object model that behaves identically in many different situations such as individual pages, intercepted requests, portal-like page fragments and integratable widgets. Components can be wired together and be packaged as groups that are components in their own right.