La maggior parte delle applicazioni client-server può essere installata in una "configurazione autonoma ", dove il client e il server sono gli stessi, come hai scritto, ma ciò non li rende "standalone" > applicazione ". Tale sistema è ancora un'applicazione client / server e la comunicazione tra processi tra il processo dell'applicazione client e il processo del database si verifica in genere tramite un protocollo di rete come TCP / IP. Inoltre, l'installazione e l'amministrazione richiedono in genere lo stesso sforzo di due macchine separate.
Naturalmente, le applicazioni specificatamente create per "utilizzo standalone" sono in genere ottimizzate per tale scenario, ad esempio accedendo al database direttamente dal processo dell'applicazione client, eliminando la necessità di comunicazioni interprocesso (in genere più lente). Oppure hanno ancora due processi per l'app client e il database, ma quelli comunicano usando "memoria condivisa" , che (sulla maggior parte sistema operativo, vedi qui per execeptions) supporta solo scenari non distribuiti. Ciò rende le applicazioni più leggere e facili da installare o amministrare, ma non è possibile connettersi facilmente a quel database da un secondo PC.
Naturalmente, molti sistemi DB (come SQL Server) sono abbastanza intelligenti da utilizzare TCP / IP per una connessione a un'altra macchina e passano automaticamente alla memoria condivisa quando rilevano client e server sulla stessa macchina. Chiamerei comunque un tale sistema un'applicazione client / server.
Come esempio nel contesto dei database Microsoft, c'è SQL Server Compact Edition che è specificatamente realizzato per tale standalone applicazioni, ma non per l'utilizzo client / server. Un esempio molto popolare del mondo freeware è SqLite. E se stai cercando un sistema di database relazionale completo che possa passare da una modalità "stand alone" (usando la memoria condivisa, ma facile da installare senza un servizio in background) e "modalità server client" (usando TCP / IP) I raccomanderebbe SQL Anywhere .