【问题标题】:Consuming WebApi from Mvc Controllers - HttpClient or reference API assembly?从 Mvc 控制器使用 WebApi - HttpClient 或参考 API 程序集?
【发布时间】:2013-04-06 20:01:57
【问题描述】:

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

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

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

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

谢谢

【问题讨论】:

  • 您的old question 出了什么问题?
  • 对不起,这是一个显示停止器 atm 我不知道如何进行。
  • 如果实例化ApiController 可以解决您的问题,为什么不将逻辑从ApiController 移至单独的服务类,然后注入服务并从您的两个控制器中使用它?

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


【解决方案1】:

你总是可以这样做

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

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

【讨论】:

  • 感谢您的回复。这看起来是一个可行的选择,但我想更多地了解这种类型的电话。你能说更多或分享一个链接,我可以阅读更多。如何防止在每个请求上实例化这两个对象,我认为它们的创建成本都很高?还有你最后一句是什么意思,我的API不是已经分开了吗?
猜你喜欢
  • 1970-01-01
  • 2014-11-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-12
  • 2015-09-21
  • 1970-01-01
相关资源
最近更新 更多