多页面应用程序的 MVC 与 Web API。是未来的网络 API?

MVC vs Web API for Multi Page App. Is The Future Web API?

我在超级早期的故事阶段开始了一个新项目,我有点不确定要使用什么设计模式。该应用程序是一个报告应用程序,允许用户设计报告并下载它们。该应用程序基本上是一个向导样式的多页数据 selector.I 我也想提供从桌面应用程序构建这些报告的功能。

考虑到过去几年 Web API 的进步,如果不在 MVC 上使用它会不会很疯狂?

我已经离开开发游戏一段时间了,Web API 和 angular 或其他 js 前端似乎是新应用程序开发人员的首选途径专注于服务器端业务逻辑以及尽可能多的消费前端。除了设置等,此应用程序中几乎没有数据持久性。

那么我选择网络 API 路线是否正确?这是什么时候不使用 MVC 的一个很好的例子吗?或者我有一个中间立场,两者都被普遍认为是明智的设计选择?

这是一个很难回答的问题,因为它提出了更多的问题。

简而言之,答案是:视情况而定。

如您所知,MVC 是一个 Pattern,用于分离应用程序的关注点。 另一方面,设计模式是软件设计问题的解决方案。

Microsoft 的 asp.net MVC 品牌最初是为了提供 替代 webforms 的。当您想要创建网站或 Web 应用程序时,这两种模式 (webforms and MVC) 都是可行的解决方案。这一切都取决于需要做什么以及您的团队在其中任何一个方面的效率。

Microsoft asp.net Web API 是一个在 .NET 框架之上构建 Web APIs 的框架。过去,我们会使用 .asmx 文件创建 Web Services。然后,他们介绍了 WCF,现在,我们有 Web API.

Web ServicesWCF 今天仍然存在并且是有效的选择但是......新的东西确实克服了早期东西中的一些限制。使用其中任何一个都有 Pros and Cons。您需要确定其中一个比另一个提供什么,以及它是否符合您的需要。

The app is a reporting app that will allow users to design reports and download them. The app will basically be a wizard style multi page data selector.I'd like to offer the functionality to build these reports from a desktop app too.

不清楚的是当你说 设计 报告 的能力时。您的意思是您的用户将可以选择他们希望报表中的内容的显示位置和方式吗?例如,用户 1 想要其徽标位于右上角,而用户 2 想要其徽标位于左下角,等等...您的用户能够“设计” 报告的程度如何?

然后你提到了关于巫师的事情。您向导中的步骤是帮助用户设计他的报告,还是充当报告的参数

然后您提到您也想在 Desktop 应用程序中提供这种类似向导的功能...我的第一直觉是 host 您的 Web 应用程序在某个地方并且在您的 Desktop 应用程序中,有一个 browser control 指向您的类似向导的 Web 应用程序的 URL

Considering the advances in Web API over the past few years, would it be crazy to not use it over MVC?

嗯...它们有不同的用途。

在过去的几年里,您通常使用webformsand/orasp.net MVC创建了一个网站] 以便设计网页 pages/Views 然后发送到用户的浏览器。

Web APIs 通常 用于创建不 return 视图或网页的 API,而是, returns data.

请注意我如何使用 通常 ...那是因为 趋势 过去2-3 年来一直在创建 Web APIs 并使用 Angular 等客户端框架来调用 Web API 并呈现 Views。使用这种方法,您几乎不需要使用 asp.net MVC and/or webforms.

请记住,虽然我说 趋势 ,但我并不是说这将在未来几个月或几年内消失。创建这些类型的应用程序是有价值的,这超出了post 的范围。但请记住,客户端框架需要人们了解它们……因此,如果您选择走这条路,则需要考虑到这一点。

顺便说一句,Microsoft 确实引入了另一种替代 asp.net MVC 的方法,称为 SPA (Single Page Application),它允许您使用上述方法构建 Web 应用程序。

尽管如此,我什至不确定我是否最终回答了你的问题:-)

我想我仍然需要对手头的确切任务进行更多说明。

好吧,MVC 和 Web API 方法都允许将模型和逻辑与表示分离,这符合您让向导通过桌面应用程序和 Web 工作的要求。对我来说,这取决于您对开发时间与应用程序性能的要求。

使用 MVC 会更快,但是除非您在视图中使用某种基于 AJAX 的专有控件,否则您将需要一次服务器往返。仅使用 Web API,您将需要进行大量手动操作 JSON 并且更多地依赖于您的前端 MVVM(MVC 模式的客户端表示),这总是更耗时。

使用 Web API 肯定会让你的耦合更松散,有可能获得最高的整体性能,如果你需要将你的 API 发布到 public,你已经准备好了。不过,它会以开发时间为代价。

因此,如果您只是想快速起步 运行,我的建议是使用 MVC。需要一个非常松散耦合、性能最优的解决方案吗?走 Web API 路线。无论如何,Microsoft 现在几乎要合并 Web API 和 MVC,因此 Web API 本质上是 MVC 模式的控制器。

此外,关于 Vlince 的回答,我应该补充一点,单页 Web 应用程序只是一个在客户端使用多个 DOM 元素的应用程序,这些元素根据输入显示或隐藏。 Kendo UI 是一个特别适合这种方法的框架,但是它只需要纯粹的 JavaScript 就可以完成,并且不是 Microsoft 特定的技术。