RIFE's design provides the best of [request|request]-based and component-based approaches and blends them together in a consistent component object model. The web engine provides a solution that values maintainability without compromising on productivity. Through a centralized site structure, an application can be split up into easily reusable binary modules that can be seamlessly integrated into other projects.
RIFE has been designed for perfect separation of tasks during a development cycle. Every developer, DBA and designer only has to focus on his own tasks. At any moment the work can be effortlessly integrated with the work of the rest of the team.
This results in a loosely coupled and very robust system. One can make incremental improvements with little or no risk of unwanted side-effects elsewhere in the system.
Request-based frameworks are very close to the original CGI specification. They 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, often independent from the web medium. The state is automatically handled by the framework, based on the data that is present in each component instance. Together with some form of event handling, 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.
RIFE combines both by taking control of the entire data and logic flow in a request-based model. Developers remain close to the architecture of CGI applications and have full control over URLs, forms, parameters, cookies and pathinfos. However, 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. They can be distributed separately and be seamlessly integrated into any other RIFE project. This provides the same form of reusability as component-based frameworks, but with the raw control of the request-based approach.
The central part is the engine which formalizes all aspects of dynamic web development. It graciously solves all doubt, confusion and maintenance problems of [
]'s statelessness and liberal CGI interface.