Foundation Patterns

The Foundation Patterns category deals with the following related executive decisions: where should the API be accessible from, and do the API clients display forms and processing results to end users or do they integrate backends?

Evolution Patterns Responsibility Patterns

Category Overview

The Foundation Patterns category comprises the following patterns:

Foundation

Pattern: Frontend Integration
Problem How can client-side end-user interfaces that are physically separated from server-side business logic and data storage be populated and updated with computing results, result sets from searches in data sources, and detailed information about data entities? How can application frontends invoke activities in a backend or upload data to it?
Solution Let the backend of a distributed application expose its services to one or more application frontends via a message-based remote Frontend Integration API.
Pattern: Backend Integration
Problem How can distributed applications and their parts, which have been built independently and are deployed separately, exchange data and trigger mutual activity while preserving system-internal conceptual integrity without introducing undesired coupling?
Solution Integrate the backend of a distributed application with one or more other backends (of the same or other distributed applications) by exposing its services via a message-based remote Backend Integration API.
Pattern: Public API
Problem How can an API be made available to an unlimited and/or unknown number of API clients outside the organization that are globally, nationally, and/or regionally distributed?
Solution Expose the API on the public Internet along with a detailed API Description that describes both functional and nonfunctional properties of the API.
Pattern: Community API
Problem How can the visibility of and the access to an API be restricted to a closed user group that does not work for a single organizational unit but for multiple legal entities (such as companies, nonprofit/nongovernment organizations, and governments)?
Solution Deploy the API and its implementation resources securely in an access-restricted location so that only the desired user group has access to it—for instance, in an extranet. Share the API Description only with the restricted target audience.
Pattern: Solution-Internal API
Problem How can access to and usage of an API be limited to an application, for instance, components in the same or another logical layer and/or physical tier?
Solution Decompose the application logically into components. Let these components expose local or remote APIs. Offer these APIs only to system-internal communication partners such as other services in the application backend.
Pattern: API Description
Problem Which knowledge should be shared between an API provider and its clients? How should this knowledge be documented?
Solution Create an API Description that defines request and response message structures, error reporting, and other relevant parts of the technical knowledge to be shared between provider and client. In addition to static and structural information, also cover dynamic or behavioral aspects, including invocation sequences, pre- and postconditions, and invariants. Complement the syntactical interface description with quality management policies as well as semantic specifications and organizational information.