【问题标题】:Where to put web scrape logic in MVC在 MVC 中将 Web 抓取逻辑放在哪里
【发布时间】:2019-03-07 19:45:37
【问题描述】:

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

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

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

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

【问题讨论】:

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


    【解决方案1】:

    所以我原本打算把它检索到 id 的逻辑放在“Logic”文件夹中,然后从 Controller 中调用它。

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

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

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

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

    【讨论】:

      【解决方案2】:

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

      您需要进行的 http 调用我会放入您的逻辑中,并确保您为 http 客户端使用某些接口,以便您可以创建 moqs 以便于进行单元测试。

      【讨论】:

        最近更新 更多