Я только сделал несколько проектов с использованием MVC, но используя вашу структуру имен, мы сделали следующее:
- MySite.Common - DLL - (базовая функциональность, построенная на .NET System Dlls)
- MySite.DAL - DLL - (DataAccessLayer &
Файлы DBML и модели репозитория)
- MySite.Models - включены как часть
веб-приложения MVC и имел только
модели, характерные для видов, которые не
всегда сопоставлять один к одному для каждого
модель хранилища.
- MySite.Controllers - включены как часть
приложения MVC, но может ссылаться на бизнес-уровень
- MySite - приложение MVC.
В итоге в моем решении MVC были реализованы следующие проекты:
- MVC Web App - содержит контроллеры, просмотр моделей для сопоставления данных DAL.
- Общее - функциональность, которую можно использовать в других приложениях
- DAL - содержит все данные, связанные с доступом к данным, включая классы-оболочки
- BL - необязательно в зависимости от того, требуется ли много логики, специфичной для бизнеса
- Тесты
EDIT: Мои DAL всегда выводят обернутые объекты (при использовании Linq2Sql я автоматически сопоставляю автоматически созданные классы с моими классами в DAL). Единственными классами, которые существуют в приложении MVC, являются контейнеры, которые представляют viwes и в основном используются для передачи данных в представления.
Если ваше мобильное приложение использует похожие представления, я бы не стал повторно использовать те же классы из представлений вашего приложения MVC. Всегда есть небольшие различия, которыми вам нужно будет управлять, и вы сможете просто использовать классы DAL для сопоставления с вашими мобильными представлениями, что соответствует схеме сохранения классов представлений, локализованных для приложения.