I did a quick performance test to find how WebClient (sync calls), HttpClient (sync and async) perform. and here are the results:
C# - Need help deciding between HttpClient and WebClient
I see that as a huge difference when thinking for future, . long running processes, responsive GUI, etc. (add to the benefit you suggest by framework - which in my actual experience is hugely faster on IIS)
We need to consume REST service from our vendor. I am evaluating the best way to call REST service . The REST service requires Basic Authentication Scheme and it can return data in both XML and JSON. There is no requirement for uploading/downloading huge data and I don't see anything in future. I took a look at few open source code projects for REST consumption and didn't find any value in those to justify additional dependency in the project. Started to evaluate WebClient and HttpClient. I downloaded HttpClient from NuGet.
If you are writing a web service which is making REST calls to other web services, you should want to be using an async programming model for all your REST calls, so that you don't hit thread starvation. You probably also want to use the newest C# compiler which has async/await support.
I did a quick performance test to find how WebClient (Sync calls), HttpClient (Sync and Async) perform. and here are the results.
If you’re , please do use the async goodness with HttpClient that Microsoft provides to the developers. HttpClient is very symmetrical to the server side brethren of the HTTP those are HttpRequest and HttpResponse.
Firstly, I am not an authority on WebClient vs. HttpClient, specifically. Secondly, from your comments above, it seems to suggest that WebClient is Sync ONLY whereas HttpClient is both.
HttpClient provides powerful functionality with better syntax support for newer threading features, . it supports the await keyword. It also enables threaded downloads of files with better compiler checking and code validation. For a complete listing of the advantages and features of this class make sure you read this SO answer.
I searched for differences between WebClient and HttpClient and this site mentioned that single HttpClient can handle concurrent calls and it can reuse resolved DNS, cookie config and authentication. I am yet to see practical values that we may gain due to the differences.
I know mine is only one opinion, but I would only recommend use of HttpClient for any future work. Perhaps there's some way to leverage some of the other pieces coming out of without using that assembly directly, but I cannot imagine how that would work at this time.