Home > REST Constraints > Related Excerpts from Fielding's Dissertation

Related Excerpts from Fielding's Dissertation

"A client is a triggering process; a server is a reactive process. Clients make requests that trigger reactions from servers. Thus, a client initiates activity at times of its choosing; it often then delays until its request has been serviced. On the other hand, a server waits for requests to be made and then reacts to them. A server is usually a non-terminating process and often provides service to more than one client."

"Separation of concerns is the principle behind the client-server constraints. A proper separation of functionality should simplify the server component in order to improve scalability... The separation also allows the two types of components to evolve independently, provided that the interface doesn't change."

NOTE

This definition was authored primarily from the perspective of applying the constraint on the Web, separating Web Server from a client-side consumer, such as a Web Browser. The definition does not directly make reference to a technical contract, but the goals for the Client-Server constraint do refer to the equivalent "interface". It is made clear that the purpose of this constraint is to allow service and consumer to evolve independently, and to simplify their respective implementations via a separation of concerns.

Note also that the first paragraph is a quote from the dissertation that cites: "Paradigms for process interaction in distributed programs" by G. Andrews, ACM Computing Surveys, 23(1), Mar. 1991.