Client - Server Patterns
Client-Server is a common architecture pattern in software systems. It is a distributed system architecture that partitions tasks or workloads between the providers of a resource or service, called servers, and service requesters, called clients. There are different patterns in which client and server can communicate with each other. Request-Response The client sends a request to the server and waits for a response. The server processes the request and sends a response back to the client. It is a synchronous communication pattern. It is used in HTTP, RPC, and other synchronous communication protocols. sequenceDiagram participant Client participant Server Client->>Server: Request Server->>Client: Response Short Polling The client sends a request to the server at regular intervals. The server responds with new data if available. It is a synchronous communication pattern with a short interval. sequenceDiagram participant Client participant Server Client->>Server: Request Server->>Client: Response ( no data ) Note left of Client: Wait for some time Client->>Server: Request Server->>Client: Response ( data ready ) Long Polling The client sends a request to the server and waits for a response. The server holds the request until new data is available or a timeout occurs. It is a synchronous communication pattern with a long timeout. sequenceDiagram participant Client participant Server Client->>+Server: Request Note right of Server: Wait Until data is ready Server->>-Client: Response ( delayed ) WebSockets The client and server establish a persistent, two way communication channel. It is used for real-time communication and updates. It is particularly useful for chat applications, online gaming, and financial trading platforms. sequenceDiagram participant Client participant Server Client->>Server: Establish Connection Server->>Client: Establish Connection Client->>Server: Send Message Server->>Client: Send Message Server-Sent Events The server sends updates to the client over a single HTTP connection. Client sends a request and the server uses the response to send updates. Server will not end the response, and will keep sending updates over the established connection. sequenceDiagram participant Client participant Server Client->>Server: Establish Connection Server->>Client: Send Update Server->>Client: Send Update Server->>Client: Send Update Publish-Subscribe The client subscribes to a topic or event on the server. The server publishes messages to the subscribed clients when an event occurs. It’s similar to WebSockets, but the server can send messages to multiple clients and the messages are partitioned by topics. It is an asynchronous communication pattern. sequenceDiagram participant Client participant Server Client->>Server: Subscribe ( establish a connection ) Server->>Client: Publish ( through the connection ) Request-Callback The client sends a request to the server and provides a callback function or URL. The server processes the request and calls the callback function or URL on the client. It is an asynchronous communication pattern. sequenceDiagram participant Client participant Server Client->>Server: Request ( with callback info ) Server->>Client: Invoke the Callback