Ho ereditato un progetto .NET che ha quasi 2 mila clienti nel campo che devono inviare periodicamente i dati a un repository centrale. I client si attivano e tentano di inviare i dati tramite una serie di servizi Web WCF in cui passano ogni entità di entità entità come parametro. Una volta che il servizio riceve questo oggetto, preforma alcune logiche di business sui dati, quindi si gira e lo inserisce nel proprio database che esegue il mirroring del database sulle macchine client.
Il trucco è che questi dati vengono trasmessi tramite una connessione a consumo, che è molto costosa. Quindi ottimizzare i dati è una priorità seria. Ora, stiamo usando un codificatore personalizzato che comprime i dati (e li decomprime dall'altra parte) mentre viene trasmesso, e questo sta riducendo l'impronta dei dati. Tuttavia, la quantità di dati che i client utilizzano, sembra ridicolmente grande, data la quantità di informazioni che vengono effettivamente trasmesse.
Mi sembra che la stessa struttura di entità possa essere la causa. Sospetto che gli oggetti siano molto grandi se serializzati per essere inviati via cavo, con molte informazioni di contesto e chissà cos'altro, quando ciò di cui abbiamo veramente bisogno sono solo i 'nuovi' inserimenti.
Sta utilizzando il framework di entità e i servizi WCF come abbiamo fatto finora per il modo corretto, dal punto di vista dell'architettura, di affrontare questo problema solo su un nodo, asincrono, push? Oppure esiste un approccio diverso, che potrebbe ottimizzare l'utilizzo dei dati?