Synchronous and Asycnhronous
Advantages of Asynchronous
1. Requests need not be targeted to specific server. 2. Service need not be available when request is made 3. No blocking, so resources could be freed. 4. Could use connectionless protocol 5. Simple, doesn't require synchronization of both communication sides 6. Cheap, because asynchronous transmission requires less hardware 7. Setup is faster than other transmissions, so well suited for applications where messages are generated at irregular intervals, for example data entry from the keyboard, and the speed depends on different applications.
Disadvantages
1. Response times are unpredictable. 2. error handling usually more complex. 3. Usually requires connection-oriented protocol. 4. Harder to design apps
Synchronous
In synchronous communications, the stream of data to be transferred is encoded as fluctuating voltage levels in one wire (the 'DATA'), and a periodic pulse of voltage on a separate wire (called the "CLOCK" or "STROBE") which tells the receiver "the current DATA bit is 'valid' at this moment in time" When you execute something synchronously, you wait for it to finish before moving on to another task.
Asynchronous
When you execute something asynchronously, you can move on to another task before it finishes.
Disadvantages of Synchronous
1 Service must be up and ready. 2. Requestor blocks, held resources are "tied up". 3. Usually requires connection-oriented protocol 4. Slightly more complex 5. Hardware is more expensive
Advantages of Synchronous
1. Easy to program 2. Outcome is known immediately 3. Error recovery easier (usually) 4. Better real-time response (usually)