Как я обычно структурировать свои решения (редактировать адаптированный для NuGet)
- WebSite (MVC)
- Контроллеры
- Просмотров
- Content (скрипты, CSS, изображения, и т.д. ,)
- Презентация Модели (для простых, проектов это будет встроен в веб-сайт)
- Просмотр моделей
- Модель картостроители
- Бизнес Логика
- Правила
- Местные расширения (веб и общие)
- данных (если комплекс, использовать отдельную папку на контекст/хранилищу/модели)
- Хранилища
- Entity Модели
- контекста данных и конфигурации
- Web Library (возможно, как отдельное решение, доступное через местный NuGet)
- Расширения (до классов MVC/Web)
- Вспомогательные классы = Атрибуты
- Общей библиотека (возможно, в виде отдельных решений, доступной через локальный NuGet)
Зависимости поток этой структуры, то есть вещи выше, может ссылаться на вещи ниже, но не наоборот. У меня также будет отдельный тестовый проект для каждого проекта. В некоторых случаях я использую внешние, разделяемые библиотеки для сетевых/общих классов, упакованных в NuGet, и размещаемых в локальном репозитории.
Для мобильных устройств, если вы собираетесь через Интернет, я бы построил их непосредственно в WebSite, используя jQuery Mobile и мобильные системы просмотра. Если вы думаете, что родной, то я бы добавил уровень WebAPI, который может или не может использовать одни и те же модели представления, как веб-сайт для доставки API, и разрабатывать мобильное приложение вне этой структуры против API. Скорее всего, API имеет свои собственные модели и сидит над бизнес-слоем в отдельном стеке. В моем текущем проекте мы имеем данные в отдельном решении и разрабатываем API и веб-сайт в отдельных решениях, совместно используем модели через пакеты NuGet.
Вы должны также отделить бизнес-логику, если вы собираетесь писать новый внешний интерфейс на каком-то этапе –
Действительно , в этом есть смысл. Не могли бы вы привести пример? – bjornruysen
Это больше о структуре решений и технологиях в вашем вопросе, а затем о архитектуре. –