Patent ID: 8108831

Claim:
A computer program product comprising one or more computer-readable storage media storing thereon computer-executable instructions that, when executed by one or more processors of a computing system, cause the computing system to perform a method for composing a plurality of components of a program, the method comprising: an act of creating a component domain; an act of instantiating an initial set of one or more components that are associated with the component domain, and wherein services imported, if any, by each of the components in the initial set are made visible to the component domain, and services exported, if any, by each of the components of the initial set are also made visible to the component domain; an act of the component domain identifying any component of the initial set of one or more components that includes nested components; for each component of the initial set of components that includes one or more nested components, an act of expanding the component that includes one or more nested components wherein the nested components are also visible to the component domain to the extent that services imported, if any, by the nested component are made visible to the component domain, and wherein the services exported, if any, by the nested component are made visible to the component domain; an act of the component domain polling the initial set of components for services exported; and an act of the component domain polling the initial set of components for services imported and satisfying at least one of the services imported of at least one of the components of the initial set of components using one of the services exported by another of the initial set of components, wherein the acts of expanding for each component that includes one or more nested components, the act of the component domain polling for services exported, and the act of the component domain polling for services imported and satisfying at least one of the services imported occur in a predetermined order; and wherein the predetermined order is first the act of expanding for each component that includes one or more nested components, second the act of the component domain polling for services exported, and third the act of the component domain polling for services imported and satisfying at least one of the services imported.