Asp.net core MVC中web刮取逻辑的位置

Asp.net core MVC中web刮取逻辑的位置,asp.net-core,model-view-controller,Asp.net Core,Model View Controller,我正在构建一个.NET核心MVC应用程序。它有一个端点,通过抓取imdb站点来检索电影的imdb id。所以我的问题是,我应该把逻辑放在哪里来获取id?我最初的项目结构如下所示 +--Controller +--Entry point api call +--Logic +--Class that retrieves imdbId +--Models +--Models +--Context 因此,我最初打算将逻辑放在“logic”文件夹中检索id的位置,并从控制器调用它。我还

我正在构建一个.NET核心MVC应用程序。它有一个端点,通过抓取imdb站点来检索电影的imdb id。所以我的问题是,我应该把逻辑放在哪里来获取id?我最初的项目结构如下所示

+--Controller
  +--Entry point api call
+--Logic
  +--Class that retrieves imdbId
+--Models
  +--Models
  +--Context
因此,我最初打算将逻辑放在“logic”文件夹中检索id的位置,并从控制器调用它。我还将实例化模型并将其存储在这里的DB中。我还在控制器中请求验证,并确保给定的电影标题和发行年份的格式正确


但我开始认为这是不正确的?我应该把请求验证和id检索放在模型层吗?任何关于如何实现这一点的帮助都将不胜感激。

我建议您将其放在Logic类中,这样您就可以在模型之外对逻辑进行单元测试。您的模型应该非常简单,只有属性,如果有其他内部逻辑需要的话

您将需要进行的http调用我将输入您的逻辑,并确保您正在为http客户机使用一些接口,这样您就可以创建MOQ,以便更轻松地进行单元测试

因此,我最初打算将逻辑放在“logic”文件夹中检索id的位置,并从控制器调用它

我也会这么做。ID检索与控制器无关(表示层不关心如何检索ID),因此应将其放置在单独的层中

我应该把请求验证和id检索放在模型层吗

不,因为这不适用于模型。模型层应该只包含模型的类。我会将请求验证放在控制器(表示层)中

我的建议是,您原来的项目结构工作良好。在逻辑层中,我将进一步分离不同服务之间的关注点,以便ID检索功能将驻留在与DB存储功能不同的服务中(DB管理本身也可以是一个单独的层)