Где поместить лоскут веб-логики в MVC - PullRequest
1 голос
/ 07 марта 2019

Я создаю приложение .NET Core MVC. Он имеет единственную конечную точку, которая извлекает IMDB-идентификатор фильма путем очистки сайта IMDB. Итак, мой вопрос, где я могу поставить логику, чтобы получить идентификатор? Моя оригинальная структура проекта показана ниже.

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

Итак, я изначально собирался поместить логику, где он получает идентификатор в папку «Логика», и вызвать его из контроллера. Я также собирался создать экземпляр модели и сохранить ее в БД здесь. Я также запрашиваю проверку в контроллере и проверяю, что название фильма и год выпуска имеют правильный формат.

Я начинаю думать, что это неправильно, хотя? Должен ли я поставить проверку запроса и получение идентификатора на уровне модели? Любая помощь в том, как подойти к этому, будет оценена.

Ответы [ 2 ]

2 голосов
/ 07 марта 2019

Итак, я изначально собирался поместить логику, где она получает идентификатор в папке «Logic», и вызвать его из контроллера.

Это то, что я бы тоже сделал.Поиск идентификатора не является проблемой для контроллера (уровень представления не заботится о том, как вы извлекаете идентификатор), поэтому он должен быть помещен в отдельный слой.

Должен ли я поместить проверку запроса и поиск идентификатора вмодельный слой?

Нет, потому что это не относится к моделям.Слой модели должен просто содержать классы для ваших моделей.Я бы поставил проверку запроса в контроллере (уровне представления).

Я предлагаю, чтобы ваша исходная структура проекта работала нормально.На уровне логики я бы дополнительно разделил проблемы между различными службами, чтобы функциональность поиска идентификатора находилась в отдельной службе от функциональности хранилища БД (управление БД также могло быть отдельным уровнем отдельно).

1 голос
/ 07 марта 2019

Я бы посоветовал вам поместить его в класс Logic, чтобы вы могли модульно протестировать логику вне модели. Ваши модели должны быть очень простыми, просто свойствами, и если им нужна какая-то другая внутренняя логика.

http-вызов, который вам нужно сделать, я бы добавил в вашу логику и убедился бы, что вы используете какой-то интерфейс для своего http-клиента, чтобы вы могли создавать moqs для упрощения модульного тестирования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...