Partitioning Client/Server Responsibilities
In moving a single, monolithic application to a separated client/server
configuration,
we must address a number of issues:
- Is there a functional partition at all?
Are there separate responsibilities that can
be performed by separate tasks?
Should they be separated?
- Is there a data-driven partition?
Can different sections of the data be centralized,
or split between multiple tasks?
Can these multiple tasks execute on separate hardware, with separate address-spaces?
Should distinct data partitions be replicated?
- Is there an extensive use of global variables?
Is there significant state information that controls the execution of the
application?
Is it possible, and desirable, to centralize this information anyway?
- Are there any hidden intra-application communication mechanisms
(such as variables, exceptions, or signals)?
Is there unusual, possibly asynchronous, control flow in the application
(e.g. the use of global goto's, or asynchronous signals)?
CITS3002 Computer Networks, Lecture 9, Client/server design, p6, 1st May 2024.
|