The Cameleon Framework - Overview

The Chameleon framework is a open-source project providing a server side development framework supporting both python and php. Chameleon comes with a database and business logic abstraction layer (Blades) and a server-side xml form environment (Decks) that can deliver a user interface to a number of workstation clients including html, ajax, java, vb2005, vb6, .Net, Flash and GTK. It also tighly integrates unit-testing facilities to ensure test driven development and client/server debug environments.

The Chameleon project intends to provide a total independence to the environment the workstation client application is running in while still taking advantage of the individual user experience and functionality that different client environments might provide. The layout of the whole application is created on the server-side. As functionality is added in the Blades and Controls/Widgets are added to a particular form in your application, it is immediately reflected in the client application without the necessity to change the client application form. It is complete server-side development but with the advantage of full client app functionality.

The Decks are objects on the server-side define how the forms work on the client application interface. The form layout is defined in Xml in a format loosely based on Mozilla's XUL format and is delivered back and forth to the client application using Xmlrpc. All methods and properties are written and maintained in the Deck object. The form widgets/controls are layed out in a seperate xml document.

The workstation client environments are all written and maintained in their native language. A new client environment can be added at anytime. All client applications must support a standard set of widgets/controls and a standard set of events/methods. The client app must also include a xmlrpc client. The client code contains minimum code. When an event is triggered such as click, change or lost focus, it is sent to the server over Xmlrpc The deck object on the server process the event and return an array with just the controls/widgets that were effected by the event.

When a new form is to be loaded as part of triggering an event on a parent form, the complete form is delivered to the client application as an array using a standard xml widget format. This array is a complete representation of the form with all its content data and layout information. The array will be pushed through the client's Chameleon Engine. The engine will translate the properties for each widget from the standard widget format to equivalent controls used by the clients application environment. The Chameleon client engine will also be responsible for mapping the client controls events back to the standard widget event format and handling any event triggered by a control back to the server for processing.

The deck objects contains only the code required to maintain the current form on the client side. The Deck object can be customised to include Blades. All business logic and database connectivity is located in the Blades. The Blades provide a quick and easy way to access tables and fields in your database. It also provides standard methods for creating derived fields without the need to create a database query.

The Chameleon project is a open-source project and as such is licensed under the GPL license agreement.

TheChameleonFramework (last edited 2007-10-13 00:58:23 by 202-14-148-252)