App di monitoraggio: lato client o lato server?

1

Ho un'applicazione web di monitoraggio che ha un backend .Net e un frontend Silverlight. L'applicazione scricchiola grandi quantità di dati, li elabora e li presenta all'utente. Quindi l'utente può interagire con i dati per visualizzare diversi grafici di registro. Lui / lei può deselezionare le dimensioni, raggruppare alcuni valori, scegliere metriche come il conteggio delle transazioni, l'importo della transazione (dollari) ecc.

Attualmente combino i dati del registro in blocchi di 3 minuti. Quindi fare una ricerca e inviarlo al client. Con questa forma di dati grezza, la sua dimensione è ottimizzata per la rete. Sul client ho un sacco di logica aziendale per elaborare questi dati per la presentazione. Inoltre, quando l'utente modifica le opzioni clientide elabora i dati in base alle scelte dell'utente.

Abbiamo scelto questo percorso per servire questa applicazione solo da un server. Non dobbiamo scalare l'importo dell'utente in azienda perché l'intera faccenda avviene sul lato client. Questo è buono ma stiamo sacrificando le prestazioni.

Sono davvero curioso di sapere cosa accadrà se scelgo di eseguire il calcolo completo per le scelte dell'utente sui dati non elaborati sul lato server.

-Sarà più veloce? -Devo ridimensionare immediatamente? -È il recupero dei dati solo una volta sul server, quindi la memorizzazione nella cache di qualcosa di simile a redis piuttosto che eseguire i calcoli in base all'utente richiede una soluzione migliore? -Se l'approccio al cliente è buono, devo passare a framework MVC lato client Javascript e Javascript come AngularJS?

E in realtà non so come scrivere la mia intera logica di business in Javascript al momento.

Informazioni extra

Il desktop medio ha una RAM da 2 GB e una CPU dual core che è il core del duo.

I nostri server sono nel cluster VM. Hanno una ram scalabile min 8gb. E 8 core xeon cpus.

100-150 utenti simultanei possono usarlo.

Ogni utente può fare diverse manipolazioni sui dati. Ecco perché hanno tutti i loro dati sul lato client.

Grazie

    
posta Xelom 26.07.2013 - 23:37
fonte

3 risposte

0

Informazioni Offloading dell'elaborazione sul lato client: Le macchine client possono gestire senza problemi l'elaborazione della logica di business? Altre applicazioni (Outlook, VS, Eclipse, ecc.) Soffrono a causa della pesante applicazione Silverlight?

Se i computer client hanno problemi con l'esecuzione dell'applicazione Silverlight, è necessario eseguire alcune elaborazioni sul lato server, magari eseguire alcune conversioni dai dati non elaborati e inviare più dati ottimizzati (ad esempio JSON / XML) ai client.

Se l'applicazione Silverlight funziona correttamente senza ostacolare il lavoro degli utenti, è perfettamente OK scaricare la logica aziendale sui client poiché si stanno salvando le risorse lato server.

Per rispondere alle tue domande:

Is it going to be faster?

Sarà più veloce dal lato client, ma più lento dal lato server. Potrebbe essere necessario aggiornare i VM.

Do I need to scale immediately?

Il tuo server elaborerà più dati di quanto non fosse in passato, quindi potresti dover ridimensionarlo se vedi che rallenta.

Is Fetching the data only once on the server then caching it something like redis than doing the computations according to user requests better solution?

Se richieste di utenti diversi recuperano più volte gli stessi dati nel server più volte e se il recupero è un'operazione lenta, è consigliabile archiviarli nella cache. In base alla quantità di dati è possibile utilizzare sistemi di archiviazione come Redis.

If clientside approach is good, do I need to switch to Javascript and Javascript client side MVC frameworks like AngularJS?

Se hai un set standardizzato di macchine client, Silverlight è buono. Potresti dover pensare ai client basati su javascript se hai sistemi Linux, Mac o Windows senza Silverlight. Inoltre, Silverlight e altri framework RIA sono molto più veloci di javascript quando si implementano pesanti logiche di business sul lato client.

    
risposta data 27.07.2013 - 07:03
fonte
1

Come stai sacrificando le prestazioni? Inviando dati ai clienti? Penso che sia molto più facile nutrire i clienti con i dati e poi passare il tempo a cambiare attività. Hai da 100 a 150 utenti, ehm vorrei dire "paralizza quando non devi quando vuoi". Sul server dovreste controllare probabilmente per alcuni thread come deadlock e altro, basta inviare i dati ai client e quelli con 2 giga di RAM e roba sarebbe felice.

L'altro modo di aggiornare i client con l'hardware sarebbe probabilmente più economico rispetto all'utilizzo degli sviluppatori per spostare la logica da client a server, specialmente se dovessi entrare in "cose strane" e, come hai detto, dovresti passare a JS che sei non so cosa fare. Pensa anche al costo in termini di tempo, ma probabilmente non ti interessa, ma se vuoi dire loro di aggiornare l'hardware del client, diventerebbero scialbi.

    
risposta data 27.07.2013 - 02:52
fonte
0

Probabilmente non sarà più veloce fare l'analisi sul server e raccomanderei di mantenerlo così com'è, a meno che non ci siano altre pressioni per fare diversamente. Aumenteresti il carico sui tuoi server se eseguono molte operazioni intensive dal punto di vista computazionale.

Sul lato client è possibile posticipare il passaggio a JavaScript fino a quando non vi è un'esigenza reale (ad esempio i tablet) ma se ora è utilizzato solo su applicazioni desktop Windows non ci sarebbe alcun motivo valido per farlo rapidamente.

    
risposta data 27.07.2013 - 06:14
fonte

Leggi altre domande sui tag