MVC仅作为表示层
本文关键字:表示层 MVC | 更新日期: 2023-09-27 18:24:05
我有一个WebAPI web服务,它充当客户端应用程序(WinForms和Mobile)的业务逻辑层。
现在我想创建一个MVC应用程序,它将只作为表示层,我怀疑这个体系结构是否有意义,或者它是否打破了MVC概念。
如果有意义的话,MVC应用程序(作为表示层)和WebAPI服务(作为业务逻辑层)之间正确/正确的交互方式是什么?
如果有人能给我一些代码示例,我将不胜感激。
如果以这种方式使用mvc,那么控制器就可以访问webapi并将数据提供给模板。
您也可以将angularjs视为视图/模板,那里的控制器可以调用数据的webapi。
虽然我认为其他答案是准确的,但您可能会想到其他一些问题。
首先,您的WebAPI可能是实现业务的地方。事实上,你可能已经处理:
- 业务相关异常
- 验证
- 可用操作
- 等等
你的Api是不应该改变的,除非某个功能背后的业务规则也改变了。
我想指出的是:保持您的用户界面完全独立于您的API
将MVC应用程序与WebApi一起使用的风险
所有代码加在一起=改变同一事物的多种原因
通过使用MVC应用程序,您可能会想将WebApi和MVC应用程序打包在同一个解决方案中。您还可以将所有的东西部署在一起。但这样做,你可能会得到一大堆代码,其中的部分并没有以相同的速度发展(即:用户界面会经常变化,但Api会在每次需要UI修复时发生变化。不。Api的每次变化都会影响UI。不。)
所有代码一起启用快捷方式
我的意思是,如果所有东西都打包在一起,开发人员可能会直接调用某些方法,而不是调用应该是唯一有效门面的API。采取任何快捷方式都可能导致代码重复、错误、验证错误等。再次强调:不要将你的MVC应用程序与API打包。
解决方案
使用Javascript框架
其他建议都不错。AngularJS、ReactJS、EmberJS都是不错的框架。(还有其他,请选择适合您需求的)但是,对于您的体系结构来说,这将是一个很好的选择,因为您将在UI应用程序和API应用程序之间创建一个明显的分离,这是分离的问题。您的业务逻辑将得到很好的保护,并且您将确保您的代码仅通过HTTP调用进行调用,这是API的唯一有效门面。换句话说,你要确保没有人会走捷径。
在自己的项目中使用.NET MVC应用程序
如果你仍然想使用.NETMVC,我建议你通过HTTP:no快捷键调用API。我将创建一个不同的解决方案,并使用一个单独的MVC项目,其中将使用HttpClient或类似RestSharp的东西来调用API。这里您想要的是避免将UI绑定到API代码。您希望将UI绑定到由API门面(API控制器)定义的契约,而不是它们的实现。
当然,如果在您的情况下可能的话,我认为最好使用JavaScriptMVC框架之一。我认为AngularJS、ReactJS或EmberJS将是最酷的变体。我不认为调用ASP.MVC操作,然后从那里再调用WEB API是个好主意,imho。