【问题标题】:Core Web API and website in single solution单一解决方案中的核心 Web API 和网站
【发布时间】:2020-01-01 07:11:21
【问题描述】:
我正在开发一个稍后将拥有移动应用程序的 Asp.Net Core 2.2 网站。我的目标是创建一个尽可能使用相同代码的平台。这意味着,如果我想运行搜索或更改用户信息,我希望网站和 API 尽可能地通过相同的代码。
因为我对 Web API 没有任何经验,所以我想知道,我应该在 Web API 中实现整个事情并从 Web 界面使用它,还是应该让我的模型 ViewModels 处理逻辑并调用这个来自 Web API 和 MVC 控制器的逻辑?这些场景中的常见做法是什么?我认为这很常见。
【问题讨论】:
标签:
asp.net
asp.net-core
asp.net-core-mvc
asp.net-core-webapi
【解决方案1】:
如果您有多个设备,最好将逻辑保存在服务器端的 Web API 中。它应该是应用程序之间的基本主从(客户端-服务器)连接。基本上你应该从 Ui 获取你需要的数据并通过 json 发送到你的 API 并转换你的数据,或者做你想做的事情,然后将结果集发送回 Ui。
在视图模型或 Ui 控制器中存在逻辑是危险的。当你这样做时,比你改变一个基本逻辑时,你必须改变双方。除此之外,尤其是在移动 UI 上,您可能没有足够的资源来执行某些流程。最好将 Ui 用作虚拟对象,只显示来自服务器的内容并将输入的数据发送给服务器。
微软制作了一个sample project,可能会给你一个想法。它与微服务和 docker 一起使用,但仍然与您想要做的事情相似。
【解决方案2】:
你应该使用像 DomainClass , ViewModel , DataLayer , Service 这样的类库
和使用项目。
您的图层完全相同。
您可以在 UI 和应用程序中编写 Api 控制器,也可以根据您的需要编写两个不同的项目。
由于您的数据库是共享的,因此应用程序和站点中的数据是相同的。