For a variety of reasons, middleware has become a critical substrate for numerous distributed applications. Middleware provides
portability, protects applications from the inherent complexities of networking and distribution, supplies generally useful
horizontal services (such as directory services, security, and transactions), and shields developers from system-level concerns
so they can focus on the logic of their applications. This paper presents an overview of middleware, including its origins,
its fundamental aspects, the different evolutionary paths it has taken, the effects that middleware standards have had on
that evolution, and where middleware appears to be headed in the future.