我们能否用api完全替代MVC的功能

问题描述 投票:0回答:1

我最近开始学习.Core MVC 和 WEB API。我发现Web Api的功能与MVC类似,那为什么我们不能在所有MVC情况下都使用API来代替MVC

例如从 DbContext _dbcontext 返回 Pies 列表 代码:

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

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

public IAction GetPies()
{
    return JsonResult(_dbcontext.Pies.ToList());
}
c# asp.net .net asp.net-core-mvc asp.net-core-webapi
1个回答
1
投票

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

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

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

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

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.