During previous years several studies have introduced the concept of "context-aware middleware" and also proposed solutions under this title; however, these systems are different in functionality. In this chapter, context-aware middleware is investigated from the standpoint of functional and non-functional requirements. Afterward, some well-known middleware systems are reviewed and, finally, open research directions as well as conclusion remarks are presented.