首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在.net和.net内核中使用HttpClient调用多个客户端apis

如何在.net和.net内核中使用HttpClient调用多个客户端apis
EN

Stack Overflow用户
提问于 2018-01-07 15:25:47
回答 1查看 1.3K关注 0票数 2

在我的一个.net核心项目中,我必须调用REST来向客户端发送一些数据。总是有超过9-10个具有不同apis的客户端具有自己的域和自定义标头。如果我每次都创建HttpClient对象,这将影响性能,因为每次都会创建和关闭新TCP连接。如果我将使用单例设计模式创建单个HttpClient对象,那么每个客户端都将使用相同的基本url和默认标题。有人能提出一个解决这个问题的方法吗?我不想在每次有新的客户端应用程序接口用于集成时都创建新的HttpClient。

EN

回答 1

Stack Overflow用户

发布于 2018-01-07 23:48:36

如果你要调用9-10个不同的HttpClient,那么9-10个静态API实例是最好的。如果编码9-10个实例感觉有点凌乱/重复,你可以将它们包装在一个字典对象中,特别是ConcurrentDictionary将有助于保持实例化的惰性和线程安全。像这样的东西应该是有效的:

代码语言:javascript
运行
复制
public static class HttpClientManager
{
    private static ConcurrentDictionary<string, HttpClient> _clients = 
        new ConcurrentDictionary<string, HttpClient>();

    public static HttpClient Get(string baseUrl)
    {
        return _clients.GetOrAdd(baseUrl, _ =>
            new HttpClient { BaseAddress = new Uri(baseUrl) });
    }
}

然后,只要你需要使用,它就是HttpClientManager.Get(baseUrl)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48135175

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档