在MVC中将网页抓取逻辑放在哪里

时间:2019-03-07 19:45:38

标签: asp.net-core model-view-controller

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

+--Controller
  +--Entry point api call
+--Logic
  +--Class that retrieves imdbId
+--Models
  +--Models
  +--Context

因此,我本来打算将逻辑放在它检索“ Logic”文件夹中的id的位置,然后从Controller调用它。我还打算实例化模型并将其存储在此处的数据库中。我也确实要求在控制器中进行验证,并确保给定的电影标题和发行年份是正确的格式。

我开始认为这是不正确的?我应该在模型层放置请求验证和ID检索吗?对于如何解决此问题的任何帮助,将不胜感激。

2 个答案:

答案 0 :(得分:2)

  

因此,我本来打算将逻辑放在它检索“ Logic”文件夹中的id的位置,然后从Controller调用它。

这也是我要做的。 ID检索不是控制器关心的问题(表示层不关心如何检索ID),因此应将其放在单独的层中。

  

我应该在模型层放置请求验证和ID检索吗?

否,因为这与模型无关。模型层应只包含模型的类。我会将请求验证放在控制器(表示层)中。

我的建议是您的原始项目结构运行良好。在逻辑层中,我将进一步区分不同服务之间的关注点,以使ID检索功能与数据库存储功能驻留在单独的服务中(数据库管理本身也可以是单独的层)。

答案 1 :(得分:1)

我建议您将其放在Logic类中,以便可以在模型外部对逻辑进行单元测试。您的模型应该超级简单,只有属性,并且如果需要其他内部逻辑,就可以。

您需要使http调用符合我的逻辑,并确保您为http客户端使用某种接口,以便您可以创建最小起订量以简化单元测试。