Я думаю, что большинство цитат вокруг MVC, как правило, нормально, но я предполагаю, что вы говорите о ... Позвольте быть конкретным и на самом деле назвать его ... Microsoft View Controller. Поскольку они склонны всегда добавлять свой собственный немного (и хотя многие не согласны, на мой взгляд, я думаю, что в большинстве своем их намерения хорошо сформированы, но это дискуссия по другой теме).
Я просто хотел подчеркнуть, что Microsoft-View-Controller на самом деле является другим вариантом в теме Model-View-Controller.
Как я использую его следующим образом:
Я вообще отделить мои проблемы с использованием различных моделей, потому что хорошо позволяет быть тупым ... один из самых медленных частей любой системы доступа к данным, внимательно следил за полосой пропускания.Поэтому я твердо считаю, что это неправильно делать, как многие предполагают, поставив бизнес-логику в модели по 2 причинам:
- MVC (независимо от варианта) является методология развития, которая разработана, чтобы быть расширяемым и ремонтопригодны.
- В Microsoft-VC нет возможности подключить представление к нескольким моделям (если вы не используете ViewModels). Эта практика поощряется, и проблемы безопасности, связанные с подключением непосредственно к задним моделям, изобилуют. Так или нет, его обычно считают плохой практикой подключать представления непосредственно к моделям, и вместо этого вы должны подключить их к ViewModels.
MVC - это многоуровневая архитектура. Так сложите его. Под этим я подразумеваю, что EF выполняет свою работу по сопоставлению таблиц с классами и оставляет их в покое. Microsoft-VC заставляет людей применять шаблон дизайна (принцип Open/Close) к модели путем автоматического генерации кода с использованием классов «Partial». Таким образом, вы создаете свой собственный пустой частичный класс, а затем добавляете к нему свои метаданные. Это не очень хорошая идея добавить код здесь, поскольку он тесно связан с моделью. Вместо этого ...
Добавить слой репозитория с использованием шаблона репозитория. Это использует все ваши классы моделей, чтобы сделать базовый (очень простой) CRUD. Тогда ...
Добавить домен (бизнес) слой и сделать его называют слой хранилища, чтобы получить данные, он должен сделать бизнес-правил ... Тогда ...
Подключение контроллеров к вашему бизнес-слоев и использовать инструмент, например automapper, для отображения данных, возвращаемых с уровня домена, для просмотра моделей для ваших представлений.
По мере того, как вы развиваетесь в этом опыте, вы можете впоследствии добавлять интерфейсы между слоями по мере необходимости и легко применять хорошо известный шаблон IOC с помощью какой-либо формы DI.
Надеюсь, это поможет ... Но в целом тот факт, что MVC является многоуровневой архитектурой, означает, что добавление слоев - это то, что он предназначен для этого, не ограничивает себя работой только одним способом. Также помните, если вы слышите, как люди говорят, что многоуровневая архитектура N-Tier для больших систем - это просто глупо ... каждая система - большая система. Ни один бизнес не инвестирует потенциально, по меньшей мере, 100 тысяч долларов, чтобы разработать небольшую систему и оставить ее на этом (я знаю, что мне платят большие деньги за разработку таких систем, исходя только из моей зарплаты и налогов, которые работодатель должен платить выше и выше моя зарплата, я могу с уверенностью сказать, что любая компания, в которой работает более 2 разработчиков, уже прошла за 100 тыс. долларов в год на разработку так называемых «малых» систем). Все системы предназначены для роста, и чем раньше вы примете этот подход, тем проще будет поддерживать и расширять вашу систему.
Вы должны спросить, что на http://programmers.stackexchange.com – JTC
извините, но я нахожу много похожих тем на этом сайте и не нахожу ответа, поэтому я просто разместил его здесь ... –
@ Статья в вики wiki исправлено. –