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