Мне нужны некоторые разъяснения по архитектуре MVC и трехуровневой архитектуре.

StackOverflow https://stackoverflow.com/questions/1025430

Вопрос

Я читал книгу Pro ASP NET MVC Framework, и меня очень путают многие вещи.Я пытался провести небольшое исследование, но обнаружил, что, когда мне предлагают так много разных подходов и концепций, это только ухудшает ситуацию.
Итак, у меня есть несколько вопросов:

  1. Я знаю, что MVC должен разделить функциональность на три основные части:Модель -> Контроллер -> Вид.Является ли MVC другим подходом, чем трехуровневая архитектура?Или мне все еще следует думать о создании уровня доступа к данным и уровня бизнес-логики в моем проекте?

  2. Что такое репозитории?Это то, что действует как мой уровень доступа к данным?Где/как репозитории вписываются в MVC?

  3. В книге говорится об использовании LINQ to SQL для взаимодействия с базой данных, но при этом утверждается, что LINQ to SQL не будет поддерживаться в будущем и что Microsoft отказывается от него в Entity Framework.Как Entity Framework вписывается в MVC и как с ним взаимодействовать?

Заранее спасибо за вашу помощь!
Мэтт

Это было полезно?

Решение

  1. MVC в основном представляет собой шаблон для уровня представления и фокусируется на взаимодействии между представлением и контроллером.Модель можно считать компоненты приложения, отвечающие за поддержание состояния, включая настойчивость.

    В простом приложении моделью может быть просто модель LINQ-To-SQL.В крупном корпоративном приложении модель может содержать уровень доступа к данным, бизнес-уровень и уровень предметной области.ASP.NET MVC не ограничивает вас в том, как следует реализовать M.

  2. А Репозиторий Шаблон — это один из способов реализовать сохраняемую часть протокола M.А АктивРекорд Другой.Какой узор выбрать, зависит от сложности аппликации и ваших предпочтений.

    Взгляни на Шаг 3 из руководства NerdDinner, где они создают простой репозиторий с помощью Linq to SQL.

  3. Linq to SQL не умрет.Microsoft по-прежнему будет улучшать ядро ​​и добавлять запросы клиентов там, где это имеет смысл, но Entity Framework будет в центре внимания.Взгляните на этот пост, чтобы Изменения LINQ to SQL в .NET 4.0.

    EF можно использовать аналогично LINQ to SQL, но он также более гибок, поэтому его можно использовать и другими способами.Например, EF4 будет более или менее поддерживать сохранение ваших собственных объектов POCO в более управляемом доменом дизайне.

Другие советы

Да, я думаю, что MVC - это другой подход, нежели " 3-уровневая архитектура, которую, я думаю, вы подразумевали здесь (архитектура, в которой вы создаете в основном 3 проекта DAL, BL и UI). Основная идея MVC - разделение проблем между каждым из его компонентов (Модель, Представление и Контроллер). Контроллер является компонентом, отвечающим за обработку пользовательских запросов, и в большинстве случаев он объединяется с «моделью». компонент для того, чтобы отобразить желаемый вид в качестве ответа на запрос пользователя. Разница между этой и традиционной 3-уровневой архитектурой заключается в том, что DAL и BL теперь сгруппированы и названы моделью, и да, вам все еще нужно создавать эти компоненты.
Что такое репозитории?
Мартин Фаулер упоминает определение хранилища как < посредник между доменом и данными отображение слоев с использованием интерфейса, подобного коллекции, для доступа к объектам домена " хранилища являются частью уровня доступа к данным, они не обращаются к данным самостоятельно, они являются посредниками между доменом и объектами отображения данных, и, конечно, они должен быть помещен в вашу папку Model / project.

Будет ли Linq to SQL устаревшим?
НЕТ и в той же книге говорится, что Дамьен Гард (разработчик из команды ADO.NET) упомянул в одном из своих постов в блоге, что Linq to SQL будет включен в .NET 4.0.

Как взаимодействовать с EF?
Как и в случае с Linq для SQL. Как и Linq to SQL, Entity Framework будет вашим картографическим объектом и будет также находиться в проекте Model.
Надеюсь, это поможет!

Полагаю, вы немного запутались в этих вещах, и они являются сбивает с толку, поэтому давайте пройдемся по ним медленно.

  1. N-уровневая архитектура и MVC — разные вещи, но они взаимосвязаны. N-Tier обычно говорит о разделении доступа к данным, бизнес-логики и пользовательского интерфейса.Однако некоторые люди могут возразить, что невозможно полностью отделить BLL от пользовательского интерфейса;MVC решает эту проблему таким образом, что соответствующий контроллер обращается к вашему BLL и вашему представлению, а не к тому, чтобы ваше представление разговаривало напрямую с вашим BLL.

  2. Да, наличие репозиториев — это один из способов создания DAL..Есть много способов сделать это, и вам не следует ограничиваться тем, что обсуждается в книге.

  3. В книге LINQ to SQL используется только для демонстрации максимально быстрого способа ASP.NET MVC, но это НЕ единственный способ. Перестаньте на минуту думать о LINQ to SQL;ASP.NET MVC можно использовать независимо от того, используете ли вы ORM, например NHibernate, или обычную ADO.NET + DAL Factory или что-то еще - вы не сможете использовать ASP.NET. ObjectDataSources который вы перетаскиваете с помощью своего пользовательского интерфейса.

Что касается Entity Framework, Брэд Абрамс написал хорошее руководство по как использовать Entity Framework с ASP.NET MVC, это должно охватывать ваш последний вопрос.

ХТХ

<Ол>
  • Да, вам все равно нужно самостоятельно создавать слои доступа к данным и бизнес-логики. Некоторые могут утверждать, что уровень контроллера ЕСТЬ - бизнес-логика, но я лично предпочитаю отделять реальную бизнес-логику (например, расчет цены) от бизнес-логики экрана (например, обработчик события для кнопки «ОК»). Затем вы будете вызывать их из вашего класса Controller. Класс контроллера управляет логикой вашего экрана и управляет переводом из уровня данных / бизнес-логики в экранное значение.

  • платформа ASP.NET MVC не накладывает никаких ограничений на " модель " слой, что означает, что вы можете использовать все, что вы хотите, включая NHibernate, LINQ to SQL или сущности. Я использую LINQ to SQL, потому что это просто.

  • Не уверен, никогда не читал эту книгу. Я только что загрузил проект Скотта Хансельмана Nerddinner из codeplex и использую его как руководство для написания веб-сайтов ASP.NET MVC.

  • Лицензировано под: CC-BY-SA с атрибуция
    Не связан с StackOverflow
    scroll top