Architecture Notes

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