Two-tier and three-tier client-server architecture