ASP.NET Web API è una tecnologia eccellente. Scrivere API Web è così facile che molti sviluppatori non dedicano tempo a strutturare le proprie applicazioni per ottenere buone prestazioni di esecuzione. In questo articolo illustrerò 8 tecniche per migliorare le prestazioni delle ASP.NET Web API. 1) Utilizzare lo strumento di serializzazione JSON più veloce La serializzazione del JSON ha un impatto critico sulle prestazioni dell'intera ASP.NET Web API. In uno dei miei progetti, sono passato dal serializer JSON.NET a ServiceStack.Text per un anno e mezzo. Ho misurato che le prestazioni dell'API Web sono migliorate di circa il 20%. Ti consiglio vivamente di provare questo strumento di serializzazione. Ecco alcuni dati recenti di confronto sulle prestazioni degli strumenti di serializzazione più diffusi.
SerializerPerformanceGraf Fonte: theburningmonk Aggiornamento: sembra che sembri che StackOverflow utilizzi Jil, il loro presuntuoso strumento di serializzazione JSON finora. Un dato di test si trova sulla loro pagina GitHub Jil serializer. 2) Serializzare manualmente JSON da DataReader Ho usato questo approccio nei miei progetti e ho ottenuto benefici sulle prestazioni. Puoi creare manualmente stringhe JSON dal DataReader ed evitare la creazione di oggetti non necessari, così da non dover prendere valori dal DataReader e scrivere sugli oggetti, poi prendere valori da quegli oggetti e usare il JSON Serializer per generare JSON. Usa StringBuilder per generare JSON e restituisci StringContent alla fine come contenuto della risposta nella WebAPI.
Puoi scoprire altri modi per farlo sul blog di Rick Strahl 3) Utilizzare altri formati di protocollo (buffer protocollo, pacchetto di messaggi) il più possibile Se puoi usare altri formati di messaggio nel tuo progetto, come Protocol Buffer o MessagePack, invece di usare JSON. Otterrai un enorme vantaggio prestazionale, non solo perché i Protocol Buffer sono molto veloci nella serializzazione, ma anche perché sono formattati più velocemente del JSON nei risultati restituiti. 4) Implementare la compressione Usa GZIP o Deflate nella tua ASP.NET Web API. La compressione è un modo semplice ed efficace per ridurre la dimensione e la reattività dei pacchetti di risposta. Questa è una funzione molto necessaria, puoi consultare altri articoli sulla compressione nel mio blog ASP.NET Web API compressione GZip ActionFilter con 8 righe di codice. 5) Utilizzo della cache L'uso della cache di output nel metodo Web API è profondo. Ad esempio, se un gran numero di utenti accede a contenuti di risposta che cambiano solo una volta al giorno. Se vuoi implementare la cache manuale, ad esempio memorizzare le password degli utenti, consulta il mio post sul blog Modo semplice per implementare la cache nella ASP.NET Web API. 6) Utilizzare ADO.NET tipici ogni volta che possibile Scrivere ADO.NET manualmente è ancora il modo più veloce per ottenere valori dal database. Se le prestazioni delle tue API web sono davvero importanti per te, allora non usare gli ORM. Puoi vedere confronti di prestazioni tra gli ORM più popolari. ORMMapper
Il codice di recupero elegante e scritto a mano è veloce, e infatti tutti gli ORM sono più lenti dei tre. LLBLGen con una cache di risultati è veloce, ma deve iterare di nuovo il risultato e istanziare di nuovo l'oggetto in memoria. 7) Implementare un approccio asincrono nell'API Web L'uso di un servizio Web API asincrono aumenta drasticamente il numero di richieste HTTP che le Web API elaborano. L'implementazione è semplice, basta usare la parola chiave asincrona e cambiare il tipo di valore di ritorno del tuo metodo in Task.
8) Restituisce più insiemi di risultati e combinazioni di insiemi Ridurre il numero di trasferimenti non è vantaggioso solo per più database, ma anche per le Web API, che permettono di sfruttare la potenza dei set di risultati. Ciò significa che puoi estrarre più set di risultati da DataReader, vedi il seguente codice demo:
Puoi restituire più oggetti in una singola risposta da un'API Web, prova a combinare gli oggetti restituiti e restituisci i seguenti oggetti:
Questo ridurrà le richieste HTTP alla tua API WEB. Grazie per aver letto questo articolo.
|