Что лучше: Разработка веб-проекта в MVC или уровневой Архитектуре N?

Я задал подобный вопрос прежде и получил убедительный ответ также?

Что различием разработки является веб-сайт в MVC и 3-уровневой или архитектуре N-tier?

Из-за заключения этого вопроса я начал разрабатывать проекты в Архитектуре N-tier.

Примерно час назад, я задал другой вопрос, о том, что лучший шаблон разработки должен создать интерфейс? Там наиболее проголосовавший ответ предлагает, чтобы я использовал архитектуру MVC.

Что лучший шаблон разработки должен разработать интерфейс WebPage?

Теперь я смущен, Сначала отправляю, предложил меня, которые и подобны, просто различие, что в N-tier, уровень физически и логически разделяется, и один слой имеет доступ к тому выше и ниже его, но не всем слоям.

Я думаю, что ASP.net использовал 3 архитектуры Уровня при разработке приложений или веб-приложений. Где как платформы как Зенд, Симфония они используют MVC.

Я просто хочу придерживаться шаблона, который лучше всего подходит для Разработки WebProject? Это может быть, очень глупый беспорядок? Но если бы кто-то мог бы очистить этот беспорядок, который был бы очень greatful?

5
задан Community 23 May 2017 в 10:32
поделиться

6 ответов

Они не являются взаимоисключающими. Паттерн Model-View-Controller - это действительно паттерн проектирования пользовательского интерфейса, и он относится к логическим, а не физическим уровням.

Чаще всего я слышу, что "n-уровневая архитектура" используется для описания фактического физического разделения уровней приложения. Например, система, в которой пользовательский интерфейс выполняется в одном процессе, обменивается данными с прикладным уровнем (возможно, через обмен сообщениями или веб-сервисы), который выполняется в другом процессе (возможно, на другом сервере), который, в свою очередь, обращается к уровню данных, выполняемому в еще одном процессе (обычно на сервере базы данных).

Это описание может быть особенно запутанным, потому что "логика приложения" может означать несколько вещей: в n-уровневой системе это обычно означает бизнес-логику - в отличие от логики пользовательского интерфейса (например, какие виджеты включаются, когда пользователь выбирает определенный флажок).

Например, в n-уровневой системе ваш презентационный уровень может вызывать метод веб-службы, который принимает идентификатор элемента. Веб-служба работает на другом сервере, где выполняет сложные вычисления и возвращает цену.

В более простой архитектуре ваше приложение может рассчитывать цену товара в том же процессе, что и пользовательский интерфейс - хотя логика ценообразования может быть выделена в отдельный логический слой (возможно, в рамках библиотеки или исполняемого файла).

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

8
ответ дан 18 December 2019 в 13:11
поделиться

Вы можете ознакомиться с Руководством по архитектуре приложений Microsoft. Он содержит хороший обзор доступных технологий Microsoft с точки зрения архитектуры. Главы, которые могут вас заинтересовать:

  • Глава 21 Разработка веб-приложений
  • Приложение B: Матрица технологий представления данных
  • Приложение C: Матрица технологий доступа к данным

Что лучше? Вы должны сами ответить на этот вопрос. Создайте несколько примеров проектов с использованием MVC, WebForms и т. Д.

2
ответ дан 18 December 2019 в 13:11
поделиться

Веб-интерфейс MVC сильно отличается от традиционного настольного MVC. Модель просто не имеет возможности обновить представление, потому что Интернет (по большей части) не имеет состояния.

Даже если вы использовали AJAX для опроса сервера каждые пару секунд для проверки обновлений модели, это все равно не будет «истинным» MVC, потому что это не модель, уведомляющая представление, это контроллер, постоянно «запрашивающий» модели.

Извлеченный урок состоит в том, что на самом деле не имеет значения, как вы называете свою архитектуру. Существует так много вариантов уровня MVC / 3, что обычно люди просто сваливают их под одеяло «MVC». И все это подходит для веб-разработки. Я просто не могу придумать какой-либо практический способ заставить Модель действительно уведомлять View посредством программирования на стороне сервера (по крайней мере, не в PHP). Если вам нужно такое поведение, вы должны писать настольное приложение. Просто напишите то, что для вас естественно, и не увлекайтесь дискуссиями о терминологии. Посмотрите, что делают некоторые из хорошо известных фреймворков, таких как CodeIgniter, Kohana, Symfony, CakePHP и Zend, и выберите, какие функции или шаблоны проектирования вам нравятся.

1
ответ дан 18 December 2019 в 13:11
поделиться

Почему бы не использовать оба? На данный момент я занят разработкой проекта с использованием шаблона MVP и в многоуровневой архитектуре. Я использую шаблон MVP в проекте пользовательского интерфейса, т.е. веб-сайт. Все данные, которые необходимо отображать и использовать на веб-сайте, передаются через веб-сервис. Этот веб-сервис подключен к бизнес-уровню (BLL), который подключен к уровню доступа к данным (DAL). DAL подключается к базе данных с помощью Entity Framework.

Итак, в этом проекте я использую их обоих. Однако использование MVP вместо MVC. Таким образом, проект интерфейса (веб-сайт) не должен выполнять сложных задач, а только передавать некоторые данные, полученные от веб-службы. Мне потребовалось время, чтобы настроить, но он работает замечательно.

Кроме того, нет реального ответа на вопрос, какой шаблон или архитектура лучше. Все зависит от того, чего вы хотите и что вам нужно. Если вы хотите быть масштабируемым, n-уровневая архитектура - хорошее решение. Если вы хотите иметь возможность легко протестировать свой пользовательский интерфейс, вам также подойдет шаблон MVC. Есть масса других шаблонов и архитектур, которых также будет достаточно, если вы знаете, как их использовать.

0
ответ дан 18 December 2019 в 13:11
поделиться

Нет лучшего. MVC и n-tier не являются ни чем, ни вещами. Один - это объект / API-дизайн, другой - системная архитектура. Здесь был задан вопрос, и на него дан ответ:

MVC против многоуровневой архитектуры

0
ответ дан 18 December 2019 в 13:11
поделиться

Я просто хочу придерживаться схемы, лучше всего подходит для веб-проекта Разработка? Может быть это очень глупая путаница? Но если бы кто-то мог очистите эту путаницу, это было бы очень здорово?

Я думаю, что ваше замешательство заключается в двух областях:

1) Предположение, что есть одно решение для каждой проблемы.

Требования вашего проекта будут определять, какое решение лучше.

2) Определение MVC в применении к сети отличается от того, когда оно первоначально применялось к настольным приложениям.

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

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

3
ответ дан 18 December 2019 в 13:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: