Как мне следует использовать пространство имен для своих моделей в ASP.NET MVC?В замешательстве по поводу ужина ботаника

StackOverflow https://stackoverflow.com/questions/766212

Вопрос

Я изучаю ASP.NET MVC, и мне это нравится.Однако меня очень смущает правильный подход к пространству имен моих моделей.

Анализируя пример приложения NerdDinner, я заметил, что все в папке Models принадлежит пространству имен Models.Классы сопоставления данных, репозитории, управление правилами ошибок и т. д. принадлежат одному и тому же уровню пространства имен.

Я понимаю, что эта папка была вдохновлена ​​такими фреймворками, как Rails и его друзьями, и что это необходимо для обоснования буквы M в названии MVC, но;не уничтожает ли автоматическое пространство имен модели какие-либо шансы на написание бизнес-логики, которая была бы одновременно отделяемой и переносимой в различные системы и реализации?

Должен ли я разместить свою бизнес-логику ниже этого пространства имен модели или мне следует полностью игнорировать ее и классифицировать свои классы более независимым от платформы способом?

Существуют ли какие-либо сложные и хорошие примеры приложений ASP.NET MVC, которые могли бы это продемонстрировать?

Это было полезно?

Решение

Я бы классифицировал ваши классы так, как вам удобнее. Я подозреваю, что они использовали это пространство имен в примере приложения Nerd Dinner, потому что с точки зрения обучения разработчику приятно всегда видеть, что они находятся в модели. часть приложения.

Лично я ничего не помещаю в папку Model и создаю отдельные проекты для своих сущностей (App.Domain) и для доменных сервисов (App.Services).Я также создаю проекты .Tests для обоих проектов.

Другие советы

Мое чутье разработчика подсказывало мне, что нам следует вообще провести рефакторинг наших моделей данных в другой проект.Некоторые даже зашли так далеко, что создали свои бизнес-объекты в еще одном проекте и составили их из классов Linq-Sql.

Я подумал, что Скотт и Ко.пошел бы по пути хотя бы отделения модели данных от уровня представления.Мы все знаем преимущества разделения ответственности, но меня озадачивает то, как они сохранили модель данных в приложении MVC.

Есть еще предложения по более многоуровневому пути?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top