2012-02-08 2 views
0

Я хочу создать прочную архитектуру для моего проекта MVC.Улучшение Asp.net MVC Layers Архитектура

В настоящее время проект имеет:

  • объектов базы данных (LinqToSql)
  • ViewModels, используемые для представлений
  • один Repository используется для

     - reading/editing/deleting database objects 
         - creating ViewModels for page 
         - other general functions 
    

Моя первоначальная структура:

MvcApplication (MvcApplication.Common, MvcApplication.Domain, MvcApplication.Models) 
     - containing all the views, controllers, repositories 

MvcApplication.Domain 
     - containing linqToSql data file 

MvcApplication.Models (MvcApplication.Common, MvcApplication.Domain) 
     - containing ViewModels 

MvcApplication.Common (MvcApplication.Domain) 
     - containing helper functions, and Enums 

Можете ли вы посоветовать мне создать лучшую архитектуру для этого проекта?

Какой слой я должен удалить или нет?

Должны ли ViewModels находиться в доменном слое?

ответ

0

Viewmodels - это реализация реализации представлений. Я не чувствую, что в этой области должны находиться модели просмотра.

Я бы сделал то же самое с доступом к данным. Я разделяю этот слой и имею только интерфейсы для сохранения в домене. Затем я могу внедрить свой доступ к данным во время выполнения. Тем не менее, YMMV. В первую очередь, зависит от скобки организации DAL. То же самое с услугами. Интерфейсы для служб в домене. Отдельная сборка для реализаций.

DAL абстракция, как это становится ОЧЕНЬ удобным во время тестирования, поэтому я могу полностью запустить мои модульные тесты против mocks или другого механизма хранения.

Я не знаю о вас, но я ненавижу с моими логическими тестами, привязанными к какой-то базе данных где-то. С несколькими людьми, выполняющими тесты, как я могу быть уверен в целостности тестовой базы данных, если я не выполняю sql express?

Я даже не могу сказать вам, сколько раз абстрагирование таких сервисов спасло мой бекон. Что, эти услуги медленны, потому что все его синхронизация? Позволяет изменить реализацию службы, чтобы засунуть сообщение в очередь. Никаких изменений в слоях приложений или что-либо еще.

Смежные вопросы