【发布时间】:2015-11-10 12:59:14
【问题描述】:
我有一个网络应用程序。我发现性能瓶颈可能是我为每个请求一次又一次地创建 Http 客户端。
public static class DemoHttpClient
{
public static HttpClient GetClient()
{
HttpClient client = new HttpClient();
client.BaseAddress = new Uri(DemoConstants.DemoAPI);
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(
new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));
return client;
}
}
public class DemoConstants
{
public const string DemoAPI = "http://localhost/";
}
我计划为此实现单例。并发现这篇非常有用的文章。 http://csharpindepth.com/Articles/General/Singleton.aspx
我很困惑 ASP.NET MVC Web 应用程序生命周期在服务器上部署时的准确程度。假设会有多个线程调用同一个资源,该资源一次又一次地创建新的http客户端..
我们应该在这里做什么.. 1)延迟加载HTTP客户端? 2) 不懒加载?
我们应该使用哪种特定方法?
【问题讨论】:
-
您说瓶颈“可能是” HttpClient 的创建——您是否进行了测试以确保是这种情况?
-
我严重怀疑你仅仅因为更新
HttpClient而存在性能瓶颈。如果您是,则机器严重不足。尝试在请求之间共享HttpClient实例不仅是一个坏主意,而且还是一种微优化。如果您遇到性能问题,请寻找真正的来修复。 -
是的,它不应该是唯一造成问题的东西。但它是一个,可能是一个次要的。我仍在进行负载测试。您可以阅读:stackoverflow.com/questions/22560971/…
标签: asp.net asp.net-mvc-4 singleton httpclient web-optimization