In his seminal book Analysis Patterns, Martin Fowler writes that a framework "... should be applicable across a large domain and be based on an effective conceptual model of that domain" (p. 11). Accordingly, the Web Application Framework defines a set of Domain Objects that are encountered in the problem domain of most WAF applications. This object model further subdivides into two categories: kernel and services.
In addition to kernel and services, WAF includes other features that facilitate building database-backed web applications: infrastructure, persistence, presentation, and web.
The kernel provides all the business logic provided by WAF, namely, business logic that is essential to building a web applications. Kernel provides domain objects that represent users, groups, and permissions.
Services are building blocks that address generic requirements common to most WAF applications. Each requirement defines a set of related Domain Objects, for example, Versioning, Workflow, and Categorization:
A user interface for interacting with the Framework's Domain Objects.
The metadata (PDL) required for persistence of the Framework's Domain Objects.
Data storage as appropriate.
Services are discussed in more detail in Chapter 4 WAF Component: Services.
Infrastructure contains software to support the mechanics of application building at each layer of the architecture (for example, serving page requests, styling the user interface, logging, specifying metadata, storing data, etc.).
This infrastructure exists independently from any specific problem domain and generally does not depend on other WAF systems.
Persistence handles the storage and retrieval of all information in WAF applications via Data Objects. Data Objects are implemented as a Java class library that supports CRUD (create, read, update, and delete) operations for any type of Data Object. This is done through a set of generic interfaces: DataObject, DataCollection, and DataAssociation. Persistence is discussed in detail in Chapter 2 WAF Component: Persistence.
Presentation is responsible for presenting data in a structured format to the end user. WAF provides three basic systems for presentation: Bebop, a web user interface component framework modeled after Java Swing; Java Server Pages (JSP); and eXtensible Stylesheet Language (XSL). Presentation is discussed in detail in Chapter 5 WAF Component: Presentation.
The Web component of WAF makes the persistent data and domain logic of your application available to others over protocols such as HTTP. It integrates the Java Servlet API and the kernel and persistence components of WAF. For more information, see Chapter 6 WAF Component: Web.