WebClient
è solo un involucro intorno a HttpWebRequest
. L'utilizzo di WebClient
è potenzialmente leggermente (dell'ordine di alcuni millisecondi) più lento rispetto all'utilizzo di HttpWebRequest
direttamente. Ma questa "inefficienza" comporta enormi vantaggi: richiede meno codice, è più facile da usare e meno probabilità di commettere errori durante l'utilizzo. Si consideri, ad esempio, recuperare il testo di una pagina Web utilizzando WebClient
:
var client = new WebClient();
var text = client.DownloadString("http://example.com/page.html");
Contrasto che a HttpWebRequest
:
string text;
var request = (HttpWebRequest)WebRequest.Create("http://example.com/page.html");
using (var response = request.GetResponse())
{
using (var reader = new StreamReader(response.GetResponseStream()))
{
text = reader.ReadToEnd();
}
}
Le cose si fanno davvero interessanti se si desidera scaricare e salvare su file. Con WebClient
, è semplice chiamare DownloadFile
. Con HttpWebRequest
, è necessario creare un ciclo di lettura, ecc. Il numero di modi in cui è possibile commettere un errore con HttpWebRequest
è davvero sbalorditivo. Lo so perché ne ho fatti molti.
Considerare ora il download di due pagine diverse. Con WebClient
è possibile scrivere:
var client = new WebClient();
var page1 = client.DownloadString(page1Url);
var page2 = client.DownloadString(page2Url);
Fatto. Con HttpWebRequest
, dovresti duplicare il codice sopra o avvolgere quel codice in un metodo. Ma se hai intenzione di avvolgerlo in un metodo, allora perché non usare solo lo WebClient
, che lo fa già per te?
Se si considera che la richiesta di un sito Web veloce vorranno probabilmente dell'ordine di 100 a 500 millisecondi, in testa i pochi millisecondi che WebClient
aggiunge ammonterà a al massimo una cifra percentuale del tempo totale .
Utilizzare WebClient
per le cose semplici. Utilizzare solo HttpWebRequest
se si richiede il controllo di livello inferiore aggiuntivo che offre. Le considerazioni sulla velocità tra i due sono irrilevanti.
fonte
2014-04-01 17:03:30
"Dipende". Perché non provarlo e scoprirlo? Ci sono anche differenze nella facilità d'uso e di capacità. –
@JohnSaunders è solo la questione di quale è più veloce. Onestamente non so come misurare esattamente ciò che ho menzionato nelle mie domande. – niklon
Se non riesci a misurarlo, non devi saperlo. Non esiste un semplice concetto di "più veloce". Nella migliore delle ipotesi, c'è "più veloce in circostanze particolari". Fondamentalmente, non ottimizzarlo prematuramente. –