ivyliner.blogg.se

Indirection
Indirection






indirection
  1. INDIRECTION SOFTWARE
  2. INDIRECTION CODE
indirection

There’s a secondary reason that you might consider this solution. Assumptions) making each unit available in more contexts. This solution promotes Reuse and Flexibility by reducing coupling (e.g. These behaviours are typically added without direct awareness of either party. Indirection is commonly used to add behaviours not necessarily belonging to the client or target. Indirection can be categorised into the following main groups (discussed next): Indirection can, under the right circumstances improve Reuse (high cohesion), Flexibility, Maintainability, Extensibility, and Evolvability. The Hub-and-Spoke Integration Architecture, where the Hub is the indirectional technique. Enterprise Service Buses (ESBs) introduced a layer of indirection between consumer and target(s), and are often used to construct workflows and transactional logic into a request lifecycle. They are often used to inject “plumbing” logic like authorization or metrics into a solution. Gateways and Edge Services use Indirection between (external) consumers and a (internal) consumable resource, such as an API. They create a bulwark/bulkhead between two systems, which is particularly useful if those systems work at different speeds. Queues are a form of Indirection (they are a Holding Pattern).

INDIRECTION SOFTWARE

The Java Virtual Machine (JVM) is a (well considered) platform agnostic “wrapper” above Operating System (OS) libraries, that encapsulates from us the complexities of which OS the software application is executing on. A Load Balancer acts as a layer of Indirection between consumer and web server and promotes (horizontal) Scalability and Resilience. Ok, we probably now see it as an anti-pattern, but the sentiment was good, and it wasn’t the fault of Indirection. SOA’s idea of reusing legacy systems by abstracting them away used Indirection. Almost anything can be wrapped for instance: Indirection is a fancy name for “wrapping”. By ensuring clients remain decoupled from the how (or even the order that) something is done, we facilitate change. You don’t always want clients/consumers to know of complex interactions of design choices.

INDIRECTION CODE

Encapsulation of code or design complexity.This promotes the use of different technologies without affecting either party, and promotes Evolvability. Ensures client and target communicate embedding a technological coupling in them. This is useful when the target’s interface cannot change, possibly because others are already tightly coupled to it, or the target is not under your control ( Control). Modifying a target interface to meet client interface needs.Aspect oriented programming is a popular solution for this problem. Logging, metrics, transaction management, and remote method invocations are examples of cross domain responsibilities, seen as “plumbing” logic that should not pollute (or be tightly-coupled to) business logic.

indirection

Facilitates functional extension that belongs neither in the client or target. Indirection removes direct coupling between units and promotes:








Indirection