What are the primary differences between asynchronous and synchronous communication in distributed systems?