Soluzioni per software che utilizzano molte chiamate a un server

0

Sto sviluppando un software che utilizza molte chiamate a un server. Sul lato client è un'applicazione Silverlight. Quasi ogni volta che un utente fa clic su un pulsante, invia 1-5 chiamate WCF a un server. Possono esserci fino a una decina di utenti alla volta. Il server è un server di database che serve i dati a un client. Sono uno sviluppatore di livello intermedio e sto pensando di mettere in cache alcuni dati e di sincronizzare le mie modifiche di volta in volta. Ci sono soluzioni o tecnologie ufficiali per questo, come, modelli e così?

    
posta Val 12.04.2012 - 10:15
fonte

3 risposte

3

Riduci il numero di chiamate. Il caching offre una nuova serie di problemi.

Un clic su un pulsante che porta a 5 richieste suggerisce forse che il cliente ha troppo controllo, forse implementando regole di business e così via. Lascia che il server faccia l'elaborazione / il pensiero. Dillo non chiedere.

    
risposta data 12.05.2012 - 03:21
fonte
0

puoi utilizzare una biblioteca di interesse trasversale come, ad esempio, il blocco di memorizzazione nella cache di Enterprise: - link , che è altamente configurabile e utile.

e una soluzione migliore, ma solo se utilizzi ORM come Nhibernate, ad esempio, hai l'opzione di caching di primo e secondo livello: - link

    
risposta data 12.04.2012 - 10:26
fonte
0

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.

    
risposta data 12.05.2012 - 09:26
fonte

Leggi altre domande sui tag