从Mvc控制器使用WebApi - HttpClient或参考API程序集?

时间:2013-04-06 20:01:57

标签: asp.net-mvc-4 asp.net-web-api autofac dotnet-httpclient

我有一个MVC应用程序和Web API的解决方案。它们位于不同的项目和域中(使用CORS)。我将其构建为Web API,以便灵活地添加消费者,但目前我的MVC应用程序是唯一的消费者。因此,我正在讨论是否在我的MVC控制器中使用HttpClient或直接实例化ApiController。

在任何一种情况下,我都使用依赖注入(Autofac),所以我也想知道如何配置它,因为HttpClient或ApiController都没有任何类型的接口,我可以通过构造函数参数注入,就像我通常这样做我不知道如何处理这个问题。

注入实例的生命周期范围应该是多少? HttpClient可能应该是Singleton,因为不鼓励在每次请求后处理它。

注意通过调用API返回用于填充图表的大型数据集,这就是我偏离HttpClient的原因,因为我觉得使用Http会产生额外的开销。是直接实例化ApiController的反模式吗?

由于

1 个答案:

答案 0 :(得分:4)

你总是可以这样做

var httpClient = new HttpClient(new HttpServer(GlobalConfiguration.Configuration));

这允许您继续使用HttpClient,但请求会直接传递到WebApi服务器,而不会发出网络请求。这样,如果您以后决定分离WebAPI,则客户端代码不会更改