Model-View-Presenter, где находится интерфейс View? - PullRequest
4 голосов
/ 14 октября 2011

Я еще раз смотрю на Model-View-Presenter (или Supervising Controller, как бы он ни назывался в настоящее время), поскольку мы используем WebForms исключительно на работе, и я думаю, что разделение интересов может помочь.

Мой вопроскасается интерфейса «Просмотр» - я понимаю, что вы создаете представление для каждой страницы вместе с докладчиком, а страница ASPX реализует интерфейс IWhwhatPageView, поэтому он может передавать себя в качестве представления, которое будет использовать докладчик.Где этот интерфейс создается в отношении проектов / DLL?Я знаю, что все докладчики имеют библиотеку классов MyProject.Presentation, в которой они живут (и тогда у вас могут быть отдельные библиотеки для ваших репозиториев / служб / доменных объектов / и т. Д.).Принадлежит ли интерфейс IWhateverPageView на уровне презентации, возможно, в дочернем пространстве имен (например, MyProject.Presentation.Views)?Нужна ли ему собственная библиотека (например, MyProject.Views)?

Какова общая структура для этого?

Ответы [ 2 ]

2 голосов
/ 14 октября 2011

Я много работал с MVP в WebForms, и я обычно очень просто организовывал свой проект.

MyProject.Web.UI

Содержит веб-сайт. Веб-страницы, javascript и т. Д. ...

MyProject.Web

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

MyProject.Lib

Обычно содержит доменную логику, но если проект достаточно прост, я помещаю это в сборку MyProject.Web.

MyProject.Web.Tests, MyProject.Lib.Tests

У вас есть тестовые проекты, верно?

В конце концов, это действительно зависит от ваших потребностей. Там нет стандартной практики, поэтому любое соглашение, которое вы придумали, должно иметь смысл для вас и вашей команды . Если это означает, что у вас есть один, два или двадцать проектов, пусть будет так.

0 голосов
/ 14 октября 2011

У меня есть один конкретный проект, который имеет интерфейсы Models, Presenters и View, так что докладчик может легко использовать представление через интерфейс.Это работает очень хорошо для нас.Я не думаю, что вам нужен контракт в отдельном слое;идея состоит в том, что интерфейс представления представляет контракт, чтобы он мог работать с докладчиком ...

...