【问题标题】:Can we completely replace the functionality of MVC with api我们能不能用api完全替换MVC的功能
【发布时间】:2018-10-13 15:48:13
【问题描述】:

我最近开始同时学习.Core MVC和WEB api,发现Web Api的功能和MVC很像,那为什么我们不能在所有MVC的情况下都用API代替MVC

例如用于从 DbContext _dbcontext 返回饼图列表 代码:

Public IAction Index()
{
    var PiesCollection=_dbcontext.Pies.ToList();
    return View(PiesCollection);
}

为什么我们不能从视图中使用 AJAX 来调用 GetPies api 并将其替换为而不是返回 PiesCollection 到视图中

public IAction GetPies()
{
    return JsonResult(_dbcontext.Pies.ToList());
}

【问题讨论】:

  • 您可以根据需要使用 AJAX。如果你愿意,没有什么能阻止你。但是 Web API 和 MVC 用于非常不同的事情。一个用于 API,另一个用于网页。
  • 是的,我知道一个是企业Web应用程序的一部分,另一个是可以暴露的服务层的一部分,但是我很困惑,我们不能替换控制器返回视图的功能吗从视图中使用 ajax 调用 API。如果是这样,是什么阻止了我们

标签: asp.net .net api asp.net-core-mvc


【解决方案1】:

没有什么能阻止你这样做,但是,它的缺点是在前端需要更多的工作,如果你不小心,可能会给用户带来一些恼人的副作用。

您不是在将 HTML 发送到浏览器之前完成所有构建 HTML 的工作,而是向他们发送不完整的 HTML,其中留有空格以供“未来”内容使用。然后页面必须请求这个缺失的内容。该服务必须完成与收集数据之前相同的所有工作,但现在必须将其序列化以发送到浏览器。然后浏览器必须解析该内容以构建 UI。

这可能意味着前端不再与您的数据耦合,因此您可以将其缓存或托管在其他服务器上,因为它不需要其中的所有逻辑。这甚至是一些移动应用程序的工作方式。前端不再是一个网站,而是一个 iOS 或 Android 应用程序,它从 asp.net 服务中获取所有数据。

但不利的一面是,如果 UI 主要由该服务返回的数据驱动,那么您的用户必须等待浏览器/应用程序获得响应、解析它并将其呈现到屏幕上。当页面内容随着数据加载而移动或更改时,这可能会让用户更加恼火。

【讨论】:

    猜你喜欢
    • 2016-06-23
    • 1970-01-01
    • 1970-01-01
    • 2021-09-14
    • 1970-01-01
    • 1970-01-01
    • 2019-08-17
    • 2013-05-18
    相关资源
    最近更新 更多