Patent ID: 7797698

Claim:
A method for assembling middleware at a client, wherein the middleware is system software that adds one layer of indirection between an operating system of the client and one or more applications and that enables the one or more applications to interoperate, said method comprising: selecting at least one middleware component from a group of one or more middleware components, said selecting being based at least in part on a first profile defining one or more requirements and capabilities of said client and a second profile defining one or more requirements and capabilities of said at least one middleware component, wherein said selecting further comprises accounting for environmental conditions including a network condition and a load condition that affect assembly of the at least one middleware component at the client, wherein said selecting comprises: searching a repository containing said group of one or more middleware components by using the first profile and the second profile; identifying one or more properties needed by the client to support an interaction between said client and a service or application; selecting the at least one middleware component, wherein the at least one middleware component is a middleware component for which the one or more properties are expressed by said second profile; confirming that said first profile meets a threshold for compatibility with respect to a third profile associated with said service or application, where said at least one middleware component is intended to support an interaction between said client and said service or application; and dynamically assembling said at least one middleware component at said client at runtime, wherein the dynamically assembling comprises at least one of: installing said at least one middleware component at said client or using one or more other selected middleware components remotely as a service.