Я использую ASP.net MVC уже около двух лет, и я все еще изучаю лучший способ структурировать приложение.
Я хотел выбросить собранные идеи и посмотреть, являются ли они "приемлемыми" способами в сообществе для разработки приложений MVC.
Вот мой основной макет:
Проект DataAccess - Содержит все классы репозитория, контексты данных LINQ-to-SQL, фильтры и настраиваемые бизнес-объекты для репозиториев БД, отличных от MS SQL (которых LINQ-to-SQL не делает) т создать). Репозитории обычно имеют только базовую CRUD для объекта, которым они управляют.
Сервисный проект - Содержит классы обслуживания, которые выполняют бизнес-логику. Они принимают заказы от контроллеров и сообщают репозиториям, что делать.
Проект пользовательского интерфейса - Содержит модели представления и некоторые оболочки для таких вещей, как ConfigurationManager (для модульного тестирования).
Основной проект MVC - Содержит контроллеры и представления, а также javascript и css.
Кажется ли это хорошим способом структурировать приложения ASP.NET MVC 2? Любые другие идеи или предложения?
Используются ли модели представлений для всего вывода в представления и ввода из представлений?
Я склоняюсь к пути создания моделей представления для каждого бизнес-объекта, которому необходимо отображать данные в представлении, и превращения их в базовые классы с набором свойств, которые являются строками. Это делает работу с представлениями довольно легкой. Служебный уровень должен затем управлять свойствами сопоставления из модели представления в бизнес-объект. Это является источником некоторых моих недоразумений, потому что большинство примеров, которые я видел на MVC / MVC2, не используют модель представления, если вам не нужно что-то вроде поля со списком.
Если вы используете валидацию новой модели MVC 2, вы бы тогда проверили объект viewmodel, и вам не пришлось бы беспокоиться о размещении атрибутов валидации в бизнес-объектах?
Как выполнить юнит-тестирование этого типа валидации или мне не следует юнит-тестирование, чтобы возвращались сообщения валидации?
Спасибо!