Distribution Of Components

[ComponentDesignPatterns | CategoryPattern]

Context

Some of the most difficult challenges that architects and builders face in the creation of enterprise- or Internet-scale software is how to determine where components should be located, and how to deal with change. Changing requirements and technology climate make adapting and evolving software a complicated task. This pattern provides helpful themes in the distribution of components during system construction and operation.

Problem

While the component-based approach to software construction provides many benefits and can facilitate rapid delivery, complexities in architecture, design, development, and operation make it difficult for builders and assemblers to compose software that always meet requirements.

Forces

Solution

Distribute the usage of components across all tiers of the application and:

Resulting Context

An application consisting of a distribution of components can use a LayeredComponentFramework so that components can be built in terms of frameworks that raise programming to a higher level of abstraction. This can be performed in any tier or layer of the component-based system. A BypassableAbstraction can allow programmers more freedom where custom development is required, and LocationTransparency can be used when scalability and flexibility are required. Disregard for component location can lead to assumptions in performance or reliability that can decrease the value of TransparentDistribution. ProcessBoundary can be used in to closely analyze location dependencies and make decisions about the physical location of components early on in the project lifecycle.


Today, we see lots of applications with small visual components plugged into client-side user interfaces that are built in web pages, Visual Basic, Visual C++, Visual Cafe, Visual Age for Java, and many other development tools that facilitate ComponentBasedDevelopment.

Increasingly, we're seeing more emphasis on server-side components as well. They're not as fine-grained, usually bigger, and have a different kind of lifecycle and relation to their infrastructure and other components. With the maturing of technologies like Java Servlets, EnterpriseJavaBeans, CORBA OTM, and MicrosoftDotNet (or will it be MicrosoftIndigo ?), it will become easier to plug in reusable server-side components.

Check out ServiceOrientedArchitecture as an example of the latest (circa 2003) evolution in concepts related to deployment of technologies, and thereby lay out the components necessary for the delivery of services.

DistributionOfComponents, coupled with appropriate decisions regarding location and transparency of components, is an important basis for the rest of ComponentDesignPatterns.


CategoryComponents
EditText of this page (last edited February 17, 2004)
FindPage by browsing or searching

This page mirrored in ComponentDesignPatterns as of April 29, 2006