Как мне следует использовать пространство имен для своих моделей в ASP.NET MVC?В замешательстве по поводу ужина ботаника
-
12-09-2019 - |
Вопрос
Я изучаю ASP.NET MVC, и мне это нравится.Однако меня очень смущает правильный подход к пространству имен моих моделей.
Анализируя пример приложения NerdDinner, я заметил, что все в папке Models принадлежит пространству имен Models.Классы сопоставления данных, репозитории, управление правилами ошибок и т. д. принадлежат одному и тому же уровню пространства имен.
Я понимаю, что эта папка была вдохновлена такими фреймворками, как Rails и его друзьями, и что это необходимо для обоснования буквы M в названии MVC, но;не уничтожает ли автоматическое пространство имен модели какие-либо шансы на написание бизнес-логики, которая была бы одновременно отделяемой и переносимой в различные системы и реализации?
Должен ли я разместить свою бизнес-логику ниже этого пространства имен модели или мне следует полностью игнорировать ее и классифицировать свои классы более независимым от платформы способом?
Существуют ли какие-либо сложные и хорошие примеры приложений ASP.NET MVC, которые могли бы это продемонстрировать?
Решение
Я бы классифицировал ваши классы так, как вам удобнее. Я подозреваю, что они использовали это пространство имен в примере приложения Nerd Dinner, потому что с точки зрения обучения разработчику приятно всегда видеть, что они находятся в модели. часть приложения.
Лично я ничего не помещаю в папку Model и создаю отдельные проекты для своих сущностей (App.Domain) и для доменных сервисов (App.Services).Я также создаю проекты .Tests для обоих проектов.
Другие советы
Мое чутье разработчика подсказывало мне, что нам следует вообще провести рефакторинг наших моделей данных в другой проект.Некоторые даже зашли так далеко, что создали свои бизнес-объекты в еще одном проекте и составили их из классов Linq-Sql.
Я подумал, что Скотт и Ко.пошел бы по пути хотя бы отделения модели данных от уровня представления.Мы все знаем преимущества разделения ответственности, но меня озадачивает то, как они сохранили модель данных в приложении MVC.
Есть еще предложения по более многоуровневому пути?