John's Computer Journal: RIFE framework analysis

Thursday, March 27, 2008

RIFE framework analysis

The RIFE framework is a fully featured web application framework.

  • Key Components: RIFE handles content management, database, meta data, templating, web, life-cycle management, external interfaces (like web services), and common services.
  • Request Routing: Requests are routed through RIFE's web engine. The web engine handles data and logic flow and ties together the components. The web engine is also features what it calls 'continuations' which are capable of ensuring idempotent and navagatable form submissions.
  • View Handling: RIFE has a template component that handles displaying dynamic web content. RIFE's template code does not include commands for anything more than presentation.
  • Model Handling: RIFE has support for several databases through JDBC and a content management system for handling binary files, e.g, images. RIFE can automatically initiate a database structure based plain old java objects, i.e, pojos and ensure they are used correctly via constraint meta data.

Stability

  • Robustness: The framework forces developers to develop a well structured application that is maintainable and easy to understand.
  • Scalability: RIFE should easily scale for high-volume data and traffic. The developers of RIFE have used it to build an IRC bot capable of tracking, recording, and displaying IRC channel conversations from multiple channels.

Framework Type

The RIFE application framework uses elements of both request-based and component-based models. The RIFE framework may be the current top hybrid framework that provides request-based control. A quick search on google for 'request based framework' returns RIFE as the first result.

  • Request-based usage: RIFE uses a request-based model to handle the entire data and logic flow. By handling the data and logic flow in a request-based method developers are able to have full control over URLs, forms, parameters, cookies and pathinfos. The request-based model is very close to the original CGI specification.
  • Component-based usage: RIFE uses a component-based approach to map actions and controllers to requests. The abstract, higher level approach provided by the component model allows consistent behavior among individual pages, forwarded pages, and integrable content, e.g., widgets and page fragments. Components can be easily distributed and re-used and embeded in other RIFE applications.

Ease of Use

  • Getting started: RIFE/Jumpstart contains source code for developers to quickly get started using RIFE. RIFE/Jumpstart supports many common development environments including Eclipse and NewBeans and comes with a Jetty servlet container and other components.
  • Learning Curve: RIFE requires certain declarations to be implemented in a handful of configuration files before an application can function correctly. RIFE's developers claim that the declarations increase productivity and reduce maintenance issues. Overall the learning curve isn't too difficult, but still uses slightly different terminology than other frameworks any may be difficult to quickly pick up and understand. Documentation, examples, and a user guide can all be found on RIFE's official website.
  • Support: RIFE's official website and wiki site provides a few good examples and tutorials of how to use RIFE. The examples and tutorials don't seem to be updated too frequently. Sources of public support outside of RIFE's official and affiliated sites are difficult to locate if they exist at all.

Sites

RIFE's official site http://rifers.org/rifespotting lists a few high-traffic sites. However, none of the sites listed were familiar to me. A few blogs mention developers that have chosen to develop using the RIFE framework, but I couldn't find many in the 'wild' that use the framework.

Thoughts

RIFE provides all the tools needed to quickly develop and maintain a Java web application. The feature set is impressive and the ability to integrate with other frameworks, libraries, tools, and APIs allow RIFE to be a great base for application development.

The difficulty in finding websites that use RIFE and the few blog posts discussing RIFE lead me to believe RIFE is being overlooked by many web developers in favor of other frameworks. I was not able to indicate any particular drawback of using RIFE over another framework.

The last update to RIFE code was sometime last summer. It may be possible that the infrequent updates to supporting documentation and core RIFE code development are causing some developers to shy away from using the framework.

No comments: