Today's embedded software applications are increasingly distributed; they communicate data between many computing nodes in a networked system. Several network middleware designs have arisen to meet the resulting communications need, including client-server, message passing, and publish-subscribe architectures.