The present invention provides a communication infrastructure that allows application programs within a software system to dynamically use services, such as receiving and transmitting messages, through a common application program interface (API). The communication infrastructure allows the specific communication schemes that are being used to be isolated from the application programs such that the application programs are not dependent upon a particular communication scheme.