我的老板想为我们的新项目提供完整的REST API。但是,他也想要一个用户界面,我们的截止日期不是很慷慨。学习一个体面的前端框架(Angular,React,Vue)可能需要花费太长时间。
他问我们是否可以完全使用MVC与REST API对话。我向他解释说MVC意味着视图与控制器紧密耦合。
他问为什么我们不能完全构建REST API,然后制作一个MVC应用程序,在控制器(或服务类)中使用HttpClient
来命中API。这是个坏主意吗?我告诉他,这似乎是另一个需要维护的大层,而且大多数人可能正在使用一个漂亮的前端框架与他们的后端交谈。
我也觉得我对其他人如何处理这种情况知之甚少。所以那些必须的人都拥有适用于所有新应用的REST API。你如何为它构建UI?我们正在使用Swagger,因此如果有帮助,可以生成TypeScript或C#客户端。
答案 0 :(得分:3)
学习一个体面的前端框架(Angular,React,Vue)可能会 证明需要花一点时间。
MVC是一个不错的前端框架。你不同意吗?
他问我们是否可以完全使用MVC与REST API对话。一世 向他解释说MVC意味着视图紧密耦合了 控制器。
他是对的,MVC并没有把你紧紧地联系在一起。糟糕的编程紧密结合。
他问为什么我们不能完全构建REST API,然后呢 制作一个在控制器(或服务)中使用HttpClient的MVC应用程序 打败API。那是个坏主意吗?
MVC到API很常见。就像你的老板说的那样,你有一个MVC(UI层)控制器使用HttpClient实例连接到你的API。他把它钉在了这里。
你的老板描述的是微软堆栈中非常常见的东西。
答案 1 :(得分:1)
他问我们是否可以完全使用MVC与REST API对话。
是的,这很常见。当前版本的MVC asp.net-core-mvc基本上MVC/WebApi包含在一个 Framework 中。
我向他解释说MVC意味着视图与控制器紧密耦合。
否即可。除了构建模型和路由到视图之外,控制器实际上与其他任何事情无关。 我从头开始构建的每个项目,视图都不知道控制器,大部分时间只知道传递给它的模型(有时甚至没有模型) 。有人可以将视图紧密耦合到控制器,但我不建议这样做。
他问为什么我们不能完全构建REST API,
你可以,很容易,我几乎一直都这么做。
创建一个MVC应用程序,在控制器(或服务类)中使用HttpClient来命中API。
这是一个坏主意 如果他们是同一个项目。没有充分的理由添加另一个网络层。它没有提供任何价值。
我也觉得我对其他人如何处理这种情况知之甚少
所以这真的是我个人的意见。我从使用jQuery的2.0版以来一直使用Asp.net-mvc。我开始使用带有KnockoutJS的MVC,它将95%的数据移动到API调用中,并且我的大多数视图都没有模型。我曾经使用Angular进行过项目,但基于我非常有限的知识,拾取起来要困难得多,而且似乎需要更多的东西来完成简单的工作。我目前正在与Kendo(类似于Knockout MVVM)合作,它完成了这项工作。在具有前端Javascript框架的所有这些实例中,我的大多数视图都是无模型的,完全依赖于API。
如果我在有限的时间内开始一个新项目,恕我直言MVC / WebAPI +淘汰赛是非常容易的。根据我的喜好和经验,这只是我的意见。
HOWEVER 警告:咆哮
他为什么要把它作为REST Api?说真的,当任何类型的经理告诉我应该用什么工具来构建解决方案时,我真的很讨厌。这是我们这个时代新的/旧的SOA(面向服务的架构)。有时添加一个没有理由的需求只会增加更多的时间/资源来解决问题。
例如:
经理:我需要将托盘送到目的地。创建一个可以尽可能高效地将一个托盘运送到目的地的车辆。哦,它需要4扇门!
我:为什么 f 需要四扇门?因为你喜欢4门?因为这是新的热潮?
答案 2 :(得分:0)
我的老板想为我们的新项目提供完整的REST API。但是,他也想要一个用户界面,我们的截止日期并不是很慷慨。
如果您使用HTML作为媒体类型,则可以使用任何您喜欢的网络浏览器来呈现UI。
答案 3 :(得分:0)
如果您的后端位于关系数据库中,并且确实您的截止日期很紧,那么可以选择手动编写API内部代码。看一下SlashDB,它将数据库包装在一个直观的API中进行读写,并提供HTML格式的GUI。 In还有一个用于AngularJS的SDK,通常易于在任何框架中用于任何Web /移动应用程序。
这可能只是给你足够的时间来在你选择的框架内完善网络应用程序,而不是把时间花在数据访问代码上,而数据访问代码往往是"隐形"给用户。
免责声明:SlashDB是我公司的产品。