Se devi utilizzare il client da remoto, la condivisione della memoria non ha senso.

Non vedo enormi vantaggi nella prima soluzione rispetto ad una soluzione personalizzata di scambio dati. Utilizzando i socket, a prescindere dal tipo di protocollo usato, e' ovvio che puoi utilizzare il client da remoto.