Domanda

Qualcuno ha qualche esperienza su come i servizi Web creati con WCF di Microsoft si adatteranno a un gran numero di utenti?

Il livello a cui sto pensando è nell'ordine di oltre 1000 utenti client che si connettono a una raccolta di servizi WCF che forniscono la logica aziendale per la nostra applicazione e questi comunicano con un database, simile a una tradizionale architettura a 3 livelli.

Ci sono particolari trucchi che hanno rallentato le prestazioni o lezioni di progettazione apprese che hanno consentito questo livello di scalabilità?

È stato utile?

Soluzione

Per garantire che la tua applicazione WCF possa scalare al livello desiderato, penso che potresti dover modificare il tuo pensiero sulle statistiche che i tuoi servizi devono soddisfare.

Hai menzionato la manutenzione di "oltre 1000 utenti client", ma per valutare se i tuoi servizi possono funzionare a quel livello dovrai anche avere alcune cifre di utilizzo stimate, che ti aiuteranno a calcolare alcune statistiche più semplici come il numero di richieste al secondo della tua app ha bisogno di gestire.

Avendo appena finito di lavorare su un progetto WCF siamo riusciti a ottenere 400 richieste al secondo sul nostro hardware di prova, che combinato con il nostro modello di utilizzo previsto di ciascun utente che effettuava 300 richieste al giorno indicava che potevamo gestire una media di 100.000 utenti al giorno (assumendo un grafico di utilizzo piatto nell'arco della giornata).

Inoltre, poiché è abbastanza comune rendere apolide il codice del servizio WCF, è abbastanza semplice ridimensionare il codice WCF effettivo aggiungendo caselle aggiuntive, il che significa che è molto più probabile che le prestazioni complessive del sistema siano limitate dalla logica aziendale e livello di persistenza rispetto a WCF.

Altri suggerimenti

Probabilmente le 4 cose più importanti che puoi iniziare a considerare per prime (oltre ad avere un buon codice di servizio) sono elementi relativi a:

  • Legami - alcuni collegamenti e i protocolli su cui vengono eseguiti sono semplicemente più veloci di altri, tcp sarà più veloce di qualsiasi collegamento http
  • Modalità istanza - questo determina come vengono assegnate le tue classi rispetto ai chiamanti della sessione
  • Operazioni unidirezionali e bidirezionali - Se non è necessaria una risposta al cliente, procedere a senso unico
  • Limitazione - Numero massimo di sessioni/chiamate e istanze concorrenti

Hanno progettato WCF in modo che fosse sicuro per impostazione predefinita, quindi le impostazioni predefinite sono molto limitanti.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top