我正在构建.NET Core MVC应用程序。它具有单个端点,该端点通过抓取imdb站点来检索电影的imdb id。所以我的问题是,我应该把获取ID的逻辑放在哪里?我的原始项目结构如下所示。
+--Controller
+--Entry point api call
+--Logic
+--Class that retrieves imdbId
+--Models
+--Models
+--Context
因此,我本来打算将逻辑放在它检索“ Logic”文件夹中的id的位置,然后从Controller调用它。我还打算实例化模型并将其存储在此处的数据库中。我也确实要求在控制器中进行验证,并确保给定的电影标题和发行年份是正确的格式。
我开始认为这是不正确的?我应该在模型层放置请求验证和ID检索吗?对于如何解决此问题的任何帮助,将不胜感激。
答案 0 :(得分:2)
因此,我本来打算将逻辑放在它检索“ Logic”文件夹中的id的位置,然后从Controller调用它。
这也是我要做的。 ID检索不是控制器关心的问题(表示层不关心如何检索ID),因此应将其放在单独的层中。
我应该在模型层放置请求验证和ID检索吗?
否,因为这与模型无关。模型层应只包含模型的类。我会将请求验证放在控制器(表示层)中。
我的建议是您的原始项目结构运行良好。在逻辑层中,我将进一步区分不同服务之间的关注点,以使ID检索功能与数据库存储功能驻留在单独的服务中(数据库管理本身也可以是单独的层)。
答案 1 :(得分:1)
我建议您将其放在Logic类中,以便可以在模型外部对逻辑进行单元测试。您的模型应该超级简单,只有属性,并且如果需要其他内部逻辑,就可以。
您需要使http调用符合我的逻辑,并确保您为http客户端使用某种接口,以便您可以创建最小起订量以简化单元测试。