What is component-based architecture? Think of a component as a Lego block. When building a structure out of Lego blocks, you can choose from a variety of shapes, sizes, and colors. There are also blocks that are purpose-built to be doors, windows, and other structural elements. Each block has all the features it needs to connect to others, and adding or subtracting blocks generally has minimal impact on the structure.
Software is much more complex than little pieces of plastic, of course, but the concept is similar. Each component is built to perform a task in a way that’s defined by the architecture. Components are stored in a library and assembled by developers. Components talk to each other through application program interfaces for simplicity. Communication is facilitated by an object request broker, which is sometimes called a “software bus” because it provides a single communications plane that all components use. Communication can occur in a number of ways, such as asynchronously, through broadcast, through a message-driven system, or as part of an ongoing data stream.
The concept isn’t new, having been discussed in academic papers as early as the late 1960s. IBM’s System Object Model, which was introduced in the early 1990s, was the first commercial effort to define a way to build software from components. Microsoft’s Component Object Model and Object Linking & Embedding, which were introduced around the same time, provided the first frameworks for use in commercial deployment.