Architecture Notes
Fluid Component Framework Architectural Notes
Component Framework Architecture
What is a Component?
Components are recurring interactions:
Navigation
Forms and data
Direct manipulation of objects
Workflows, wizards, and sequences
On the client-side, a Fluid component consists of:
One or more HTML templates
One or more layers of CSS
JavaScript for behavioural logic
Accessibility metadata (control, presentation, etc)
And on the server-side:A set of conventions for accessing service logic
The ability to deliver the appropriate markup, metadata, and user preferences
Types of Components
Markup-driven components are general:
Server delivers fully-rendered HTML
JavaScript manipulates DOM based on id contract
Greater flexibility and reuse, but greater server dependency
Data-driven components are smarter but slower:
Handle their own template processing
Require multiple round-trips to the server for data
Allow for less dependency on server-side presentation framework
Elements of the Framework
Framework infrastructure: lifecycle supports, server-side communication, etc.
Components themselves
Transformation engine
Server-side binding and delivery
Repository of components
Metadata standards
Transformation Flow
Compare metadata and preferences
If okay, do nothing
Otherwise, request an alternative component
Select from alternatives or use initial component
Component Repository
Mirrored within the application (ie. doesn't require a dependency on a 3rd party server)
Options:
Repository is just a file system: client-side transformation engine does all the work of finding matches
Repository is smart: implemented in Java or JavaScript or anther language, and can respond to requests from a lighter-weight client-side transformation engine