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

  1. 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
  2. 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