Ciao Giuseppe,
non ho capito se hai scritto tu il webservice e se hai il controllo del server.
se il collo di bottiglia sta nella banda in upload della mia connessione
Puoi usare la visualizzazione timeline di Fiddler per capire quanto dura ciascuna richiesta.
http://docs.telerik.com/fiddler/KnowledgeBase/TimelineComunque, già solo il fatto che invii dei dati via rete rallenta certamente l'esecuzione, specie se invii tanti oggetti in richieste singole. A prescindere che la tua connessione sia un collo di bottiglia o no, dovresti inviare risultati in batch per ottimizzare il trasferimento.
debba perdere tempo a instanziare il client
Istanziare il client è un'operazione molto rapida, non credo che ci siano possibilità di ottimizzazione considerevoli da quel punto di vista.
Non ho ben chiaro cosa intendi con "autenticarti": per ogni oggetto che invii al servizio effettui una precedente richiesta di autenticazione? Se è così, è un motivo in più per inviare gli oggetti in un batch.
si il server accetta collezioni di oggetti solo che ho provato e oltre un certo numero inizia a sbagliare
Questo sembra un problema di implementazione più che di banda. Infatti, se il problema fossero eventuali pacchetti arrivati corrotti al server, il protocollo TCP/IP li individuerebbe e chiederebbe al client di reinviarli. Tutto questo è trasparente e non devi preoccupartene.
Se il servizio "inizia a sbagliare", direi che quasi sicuramente il problema è nell'implementazione dell'operazione del servizio.
Dovresti però chiarire cosa significa che "inizia a sbagliare". Se si tratta di un errore causato da una richiesta troppo grande, cioè che supera il limite di bytes preimpostato nella configurazione, allora dovresti ridurre il numero di oggetti inclusi nel batch. Inizia con l'inviare 50 o 100 oggetti alla volta, già dovrebbe velocizzarsi di parecchio.
Mi chiedevo inoltre come attivare la conpressione gzip supportata dal server e se da qualche risultato.
Questo servirà a ridurre il tempo di trasferimento. I risultati dipenderanno dalla qualità della tua connessione: più è lenta e più ne apprezzerai i benefici.
Non hai detto che tipo di webservice hai lato server. WCF? Web API? L'abilitazione dipende dalla tecnologia che stai usando. Ecco una possibile soluzione per far accettare ad ASP.NET Web API una richiesta gzip.
http://stackoverflow.com/questions/12345292/how-do-enable-a-net-web-api-to-accept-g-ziped-postsIn generale, se vuoi monitorare le prestazioni del webservice lato server, puoi sfruttare varie soluzioni:
ciao,
Moreno