Web API多次或单次调用

时间:2014-01-06 15:47:37

标签: asp.net-mvc performance asp.net-mvc-4 asp.net-web-api

我们正在使用MVC 4.0和Web API重写我们的系统,我们目前正处于决策分割器。

对Web API进行多次小型调用而不是在MVC网页上显示数据的单个大型调用是否更有效/最佳做法: -

多次通话

调用1 - 返回有关用户的核心数据(用户模型)

调用2 - 返回有关用户状态(状态模型)的数据

调用3 - 返回用户历史记录(历史模型)

单次通话: 返回一个Full ViewModel,其中包含有关用户的所有核心数据,其当前状态和历史记录项列表

  public string UserName { get;set;}
  public Status UserStatus { get;set;}
  public List<history> { get;set;}

非常感谢任何建议(附加信息,每个调用都是一个单独的数据库调用)

2 个答案:

答案 0 :(得分:2)

虽然我不确定这是否是这个问题的最佳位置(我认为这可能更多地涉及程序员领域),但我会说这实际上取决于您最常需要的数据。如果你的应用程序中的每个页面都需要整个对象,那么它真的会为你节省多少小小的电话吗?如果某些数据可以缓存在客户端,那么可能很多小调用会更有效,但是否则,你增加了客户端的数量(客户端必须检索,解析,然后输出三个流数据)和服务器(必须路由调用,检索数据和返回数据)的工作效果不大。

其次,正如@Damien_The_Unbeliever指出的那样,有外人称这个API的问题。如果API是公开的,或者由多个应用程序调用,则问题是/大多数/应用程序需要的最有效的程序包是什么,而不仅仅是这个应用程序需要什么。如果/ most / apps将需要整个对象,那么给它们调用只检索该对象的部分是没有意义的。如果他们只需要,例如,状态,那么只需检索状态的API方法就是一个很好的调用。

答案 1 :(得分:0)

当您设计API操作时,请始终考虑性能,一秒钟内您的操作将消耗多少次,您的单独操作是否需要很长时间才能响应。使用Stopwatch为每个操作创建简单的基准测试,然后进行多个并行调用以查看是否有任何操作成为瓶颈。

在我看来,每个动作都应该简单而原子。