Server-client is a deployment model, not architectural

Separating interface and implementation is a good old principle, but surprisingly often it is violated.

Maybe one reason for this is the misunderstood role of the server-client model.

The server-client model is a deployment model. Or in other words, it describes the runtime properties of an application.

However, in software architecture (in the source-code maintainability sense) these two layers are not enough. The server needs to be split into two: the api and its implementation.

So the "minimal" set of modules for a client-server application is client-api-apiimpl.

Of course, there can be several client and server implementations, but 3 is the minimum number of modules.

Originally published on 2006-01-04 at under category Software Architecture