7

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

我的问题是,虽然我知道如何从设备中使用 WebApi,但我正在以最佳方式、最佳实践或仅适用于如何从托管的 MVC 项目中使用 WebApi 的方式绘制一些空白api。

我的第一个想法是像其他任何类一样根据需要实例化控制器,但是我有一个偷偷摸摸的怀疑,虽然它会起作用,但这是一种不好的方法。

另一个想法是使用 HttpClient。尽管我很幸运,因为我永远找不到 api

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

1 回答 1

2

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

  • 走简单路线和依赖关系解析控制器实例有多安全?
  • 这个逻辑会在其他地方使用吗?
  • 这真的是两个独立的应用程序问题吗?

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

如果 MVC 和 WebAPI 都公开相同的信息并且安全/关注点分离不是问题,那么解决控制器的依赖关系就足够了。

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

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

tl; dr - 如果不知道应用程序是什么以及将要做什么,那么真的无法回答这个问题。务实。

于 2013-09-08T23:08:16.680 回答