Communication in distributed applications across a wide area network needs to cope with heterogenous and constantly changing network conditions. A promising approach to address this is to augment the whole communication path with network awareness by using “bridging” components that are capable of caching, protocol conversion, transcoding, etc. While several such path-based approaches have been proposed, current approaches lack mechanisms for automatically creating effective network paths whose performance is optimized for encountered network conditions. This paper describes a solution for this problem. Our approach, which is built into an application-level programmable network infrastructure called CANS (Composable Adaptive Network Services), constructs network-aware communication paths that enhance application performance by taking into account both application performance preferences and dynamic resource availability. Our experiments with typical applications verify that communi...