Ti suggerisco di studiare il "vero bisogno" di cambiare la tua situazione attuale. Non è bello avere tutte quelle chiamate ma influisce sulle prestazioni del tuo sistema in modo evidente? Se disponi delle risorse per modificare la situazione attuale, puoi prendere in considerazione una delle opzioni qui.
Come tutti dicono, riduci il numero di chiamate. È necessario esaminare il motivo per cui si stanno facendo tutte quelle chiamate al server. A meno che le chiamate al server non dipendano l'una dall'altra, allora probabilmente hai un'interfaccia di servizio generica che deve essere cambiata. Non conosco il tuo database ma supponendo che sia come clienti, intestazione ordine, ordini, puoi restituire tutti questi dati in una sola chiamata. Questo può essere fatto in diversi modi, per esempio si può usare LINQ INCLUDE (Eager Loading) o si può scrivere una stored procedure che supporta set di risultati multipli (MARS). Il trucco qui è bilanciare tra il numero di chiamate richieste e la dimensione del risultato restituito. Non vuoi effettuare una chiamata che restituisce troppi dati. Qui, l'intrigante design della GUI gioca un ruolo importante. Se la tua GUI è progettata senza tener conto di ciò, devi domarla. Ad esempio, anziché restituire 1000 ordini nello scenario precedente, restituire 10 e consentire il paging. Oppure chiedi all'utente se vuole vedere i dettagli dell'ordine (può averlo come pulsante separato). Naturalmente, questo dipende dalle esigenze della tua azienda. Se la maggior parte dei dati che leggi sempre sono dati che non cambiano spesso, ad esempio tabelle di ricerca, quindi incassare quelli che hanno senso. Tuttavia, avrai bisogno di un meccanismo per aggiornare questa cache. In molte aziende, le modifiche alle ricerche non avvengono in modo ad hoc e possono essere apportate a fine giornata o simili. Tuttavia, è necessario definire e implementare il modo in cui la cache verrà aggiornata.