asp.net-mvc - Web API 多次或单次调用

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

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

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

多次调用:

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

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

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

单次调用: 返回一个完整的 ViewModel,其中包含有关用户的所有核心数据、当前状态和历史项目列表

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

任何建议将不胜感激(附加信息,每个调用都是一个单独的数据库调用)

最佳答案

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

其次,正如 @Damien_The_Unknowner 指出的那样,存在外部调用此 API 的问题。如果API是公共(public)的,或者被多个应用程序调用,那么问题是/大多数/应用程序需要什么最有效的包,而不仅仅是这个应用程序需要什么。如果/大多数/应用程序需要整个对象,那么调用它们来仅检索该对象的各个部分是没有意义的。如果他们只需要 Status,那么只检索 Status 的 API 方法是一个不错的调用。

关于asp.net-mvc - Web API 多次或单次调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20953658/

相关文章:

asp.net - 从源代码管理进行 Azure 网站部署期间的 Web.config 转换

asp.net-mvc - asp.net mvc Html.ActionLink 忽略 jquery 属性

asp.net - jQuery 模板 MIME 类型

algorithm - 计算阶乘的快速算法

performance - 用于分片 + 冗余 MongoDB 环境的硬件

c# - 引发异常时不显示自定义错误页面

java - 在数组中重用 HashMap

c# - 使用 Active Directory 使用本地用户登录

javascript - Kendo UI Treeview 当前数据源帖子

jquery - 升级到 jQuery 1.9 后 MVC 4 Internet 项目 JSON 错误