RIFE
From Wikipedia, the free encyclopedia
RIFE is a full-stack open source Java web application framework with tools and APIs to implement most common web features. Each of its toolkits is usable by itself and together they offer powerful integrated features that boost your productivity. RIFE ensures that every declaration and definition is handled in one place in the code. This simplifies the developer's task by reducing code replication, enforcing consistency, and easing maintenance.
RIFE's design provides the best of 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.
Contents |
[edit] Overview
RIFE offers an alternative approach to web application development and design. It builds upon the Java platform, but offers all required tools and APIs to implement and perform all common website related tasks in a fast, intuitive and consistent manner.
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.
[edit] Web engine
There are currently two major schools of web application development frameworks: request-based and component-based.
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.
[edit] Feature summary
RIFE is composed out of a large collection of modular parts, which include:
- web application engine, (description)
- integrated web continuations, (description)
- IoC support (description)
- bidirectional multi-format template engine (xhtml, html, xml, sql, java, txt, ...) (description)
- support for template content transformation through for example XSLT, (description)
- content management framework, (description)
- centralized meta-data facility, (description)
- authentication framework, (description)
- JDBC abstraction layer, (description)
- database query builders, (description)
- persistence layer, (description)
- configuration framework, (description)
- central application life-cycle management, (description)
- cron-like scheduler, (description)
- asynchronous mail queue, (description)
- content syndication framework, (description)
- resource abstraction, (description)
- web services. (description)
The central part is the engine which formalizes all aspects of dynamic web development. It graciously solves all doubt, confusion and maintenance problems of HTTP's statelessness and liberal CGI interface.