从MVC控制器中使用ASP.NET WebApi

时间:2013-09-08 21:22:05

标签: c# asp.net-mvc asp.net-mvc-4 asp.net-web-api

我开始研究一个新项目,我通过WebApi公开客户端功能,这样我就可以在多个设备上重用相同的功能,但是移动设备和托管应用程序之间共享一些功能。

我的问题是,当我知道如何从设备中使用WebApi时,我在最佳方式,最佳实践或者只是在MVC项目中如何使用WebApi的方法上做了一些空白这是主持api。

我的第一个想法是按照我需要的方式实例化控制器,但是我有一种潜在的怀疑,虽然它会起作用,但这是一种糟糕的方法。

另一个想法是使用HttpClient。虽然我有幸运气,因为我永远找不到api的

var client = new HttpClient(new HttpServer(GlobalConfiguration.Configuration));
client.PutAsJsonAsync("/api/project/login", Json(model));

1 个答案:

答案 0 :(得分:2)

这是一个主观问题,因为确实没有“正确”的答案。基本上,您需要考虑多个要点。

  • 简单路由和依赖关系解析控制器实例的安全性如何?
  • 这个逻辑会在其他地方使用吗?
  • 这些真的是两个独立的应用问题吗?

基本上,如果API和MVC应用程序有不同的关注点,那么它们应该正确分离,MVC应用程序应该使用HttpClient调用WebAPI应用程序。这可以减少攻击向量并很好地分离应用程序问题。

如果MVC和WebAPI都暴露相同的信息并且关注点的安全性/分离不是问题,则解析控制器的依赖性就足够了。

如果逻辑不是问题分离问题,它将在多个地方使用,那么将其分解为常见组件可能是您最好的选择。

从臀部拍摄这听起来像一个小应用程序,可以在不久的将来从依赖解析控制器中受益。随着应用程序的增长(或者如果它已经被规划为大),那么将逻辑分离成适当的SOA格式将是有益的。

tl; dr - 在不知道应用程序是什么和将要做什么的情况下,SO真的无法回答这个问题。务实。