在我们的项目中,我们成功使用了HttpClient Per BaseAddress(Domain)模式的一个实例。例如, api.externalservice.com 的所有请求都来自同一个HttpClient。我们的代码旨在处理此类请求。 现在,我们需要调用两个不同的子域( api1.externalservice.com 和 api2.externalservice.com )。 HttpClient的一个实例是否足以处理这两个子域的请求和响应?或者我们是否需要两个HttpClient实例(一个用于api1.externalservice.com,另一个用于api2.externalservice.com)?这对于我们改变或不改变我们的代码结构非常重要。
答案 0 :(得分:0)
一个例子很好。只有当你需要多线程时 - 那么你应该为每个线程都有一个实例。
更新:(谢谢Kirk)
根据这个https://msdn.microsoft.com/en-us/library/system.net.http.httpclient(v=vs.110).aspx#Anchor_5有些方法甚至是线程保存。
并在页面上注明此评论:
HttpClient旨在实例化一次并在整个过程中重复使用 申请的生命。实例化HttpClient类 每个请求都会耗尽重量下的插座数量 负载。这将导致SocketException错误。