The main problem with client-based architectures is the need for all of the data to travel back and forth between server and client.
For example, if the client program is making a database query, the entire database must travel to the client before the query can be processed.
The result can be poor network performance due to the bottleneck created by constantly sending large files back and forth over the network.