(4) A Shared Component
Though the Client programs previously discussed show the basics for constructing a complex program, they only illustrate the use of components that are private to the Client executable file. On the other hand, many applications make use of components that are shared by many applications. These components — which are typically provided by third-party developers — are installed in a common location in the system. By default, the system looks for each program's components in that location, which is known as the global assembly cache (GAC). In COM+ applications, this mechanism is heavily dependent on the registry, where information about each component is stored, including information about its version and physical file location. Unfortunately, although this method allows multiple applications to share a single component, it also allows situations where installing a component with one application can overwrite the existing installed component, possibly causing other applications to break. This is often difficult to detect, because the offending application appears to work fine and, by the time the broken application is run, it might not be possible to recover the common files to a stable configuration.