Rough Architecture Notes from the Fluid UToronto Team's Whiteboard
These are just notes; they don't make sense yet.
Fluid Component Framework Architectural Notes
Component Framework Architecture
What is a Component
- What does a component look like?
- How does it get used?
- How is it customized?
- How are new components built?
- Relationships between components
- Proxying to the server
Server-side Binding Layer
- Small number of actions: "verbs"
**Lots of names: "nouns"
Components are recurring interactions:
- 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
- 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
- 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
- Compare metadata and preferences
- If okay, do nothing
- Otherwise, request an alternative component
- Select from alternatives or use initial component
- Mirrored within the application (ie. doesn't require a dependency on a 3rd party server)
- Repository is just a file system: client-side transformation engine does all the work of finding matches