2010-05-28 2 views
5

Я уже задал аналогичный вопрос и получил убедительный ответ.Что лучше: Разработка веб-проекта в MVC или N-Tier Architecture?

What is difference of developing a website in MVC and 3-Tier or N-tier architecture?

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

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

What is the best design pattern to design the interface of an WebPage?

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

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

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

+1

будет легче ответить, если вы объяснить более подробно, что вы имеете в виду, когда вы говорите «многоуровневого» и «MVC «. Оба эти термина эволюционировали со временем и приобрели несколько значений, некоторые из которых являются взаимоисключающими. –

+0

На самом деле, у меня нет большого понимания как в архитектуре MVC, так и в N-уровне. – Starx

+0

Лучший дизайн шаблона, вероятно, является мифом, так как ничто не будет идеальным во всех случаях, IMO. –

ответ

8

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

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

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

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

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

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

3

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

Я думаю, что ваша путаница лежит в двух областях:

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

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

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

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

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

1

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

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

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

2

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

  • Чп 21 Проектирование Веб-приложения
  • Приложение B: Презентация технологии Matrix
  • Приложение C: Доступ к данным Технология Matrix

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

0

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

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

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

0

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

MVC Vs n-tier architecture

+0

+1 к вашему первоначальному ответу. –