Ottimizzare le performance di un Web service non differisce da quanto si farebbe per una qualsiasi pagina web dinamica. Per quanto riguarda il Web Server va considerato naturalmente il numero e la frequenza delle richieste. Se la frequenza è molto alta, così come il numero delle richieste, vi sconsiglio di mantenere i vostri siti web sullo stesso server, potrebbe influire sulla velocità di navigazione.
Inoltre ricordate che all'aumentare delle richieste contemporanee aumentano anche le risorse richieste dal Web Server. Per esempio, un server Apache che apre un nuovo child per ogni richiesta con un gran numero di moduli caricati può saturare in poco tempo le risorse RAM del vostro server. Vi consiglio quindi di caricare sempre e solamente lo stretto indispensabile per fare girare i vostri Web service e nulla più.
Compressione delle richieste e risposte
Un aspetto molto interessante per le performance è la compressione delle richieste/risposte HTTP inviate/ricevute dal client e dal server durante il dialogo con un Web service. L'XML si presta molto bene alla compressione essendo un documento di solo testo. L'utilizzo di compressioni come GZip garantisce un risparmio di banda pari a circa il 60% del traffico altrimenti utilizzato da un comune Web service. È chiaro tuttavia che il nostro Web Server deve inviare al client risposte compresse solamente se questo è in grado di gestirle.
Normalmente un client specifica al server che è in grado di gestire GZip grazie ad una riga nell'header HTTP come questa che vedete qui di seguito.
Accept-encoding: gzip
Ricordate che inviare messaggi compressi a client che non sono in grado di gestirli renderà inutilizzabile il vostro servizio web. Inoltre se inviate contenuti compressi ricordate di specificare nell'header della risposta HTTP l'encoding utilizzata.
Nel caso di GZip potreste usare la forma seguente:
header: Content-Encoding: gzip
Questa operazione di compressione può essere effettuata direttamente da noi nel nostro codice o può essere delegata al Web Server. Ricordate che abilitare la compressione causa un maggior utilizzo della CPU. Tuttavia, almeno mentre sto scrivendo questa guida, risulta più economico sostituire i processori piuttosto che duplicare la banda a disposizione (e penso che la situazione resterà così per un tempo ragionevolmente lungo).