Re: Composite UI Application Block и MVP
От: BaToH Беларусь  
Дата: 23.07.07 17:32
Оценка: 4 (1)
Здравствуйте, baranovskiyne, Вы писали:

B>Добрый день.

B> Занимаюсь изучением CAB, Smart Client и т.д.
B> У меня возникает вопрос: в паттернах MVC и MVP модель (в CAB — это, я так понял, — WorkItem) и View (SmartPart) — разорваны, т.е. модель не знает о вью и наоборот. Во всех же примерах модель не просто знает о вью — но и сама создает его, а вью зачастую создает экземпляры модели. Либо я неправильно разобрался в терминологии либо одно из двух...
B>В чем тут дело, подскажите плиз.

Привет,

WorkItem в CAB — это контейнер компонентов (компонентами может выступать практически всё начиная от воркспейсов, смартпатов, сервисов и т.д., заканчивая другими воркайтемами, которые являются дочерними к данному). Главная цель контейнеров (в контексте CAB — WorkItem) — это сделать так, чтобы объекты, которые тесно взаимодействуют друг с другом (это могут быть Views, которые отображают информацию, Presenters, которые управляют этими Views, сервисы, которые необходимы для работы этих Presenters и Views) создавались и уничтожались одновременно. Т.е. WorkItem не есть модель.
Моделью в конетксте CAB может выступать States, которые есть у этого WorkItem'а. Но ты так же можешь создать сервис, к которому будешь обращаться за получением и обновлением данных.

Далее, создание.
Что происходит, когда запускается приложение CAB:
А дальше твой модуль может отображать виды в вокрспейсы, и проводить необходимую инициализацию.

Получается что WorkItem знает о смартпатах, которые ему надо создать, он их создаёт. А SmartPart знает о своём Presenter'е.
Здесь по рекомендации Microsoft следующая зависимость:

Т.е. с презентером ты можешь общаться напрямую, а вот презентер ко View стучится через интерфейс. Это существенно облегчает unit-тестирование, потому что вместо реального ConcreteView ты можешь какой-нить фейк впихнуть.

Но это только рекомендации.

Мда.. написал много.
В кратце: WorkItem — не модель. И презентер может общаться с WorkItem напрямую. Так же он может получить необходимые сервисы через ServiceDependency.
Ну и общение между Views лучше проводить через презентеры через Publish/Subscribe.

Надеюсь, всё доступно объяснил
Всё возможно.
Composite UI Application Block и MVP
От: baranovskiyne  
Дата: 23.04.07 07:59
Оценка:
Добрый день.
Занимаюсь изучением CAB, Smart Client и т.д.
У меня возникает вопрос: в паттернах MVC и MVP модель (в CAB — это, я так понял, — WorkItem) и View (SmartPart) — разорваны, т.е. модель не знает о вью и наоборот. Во всех же примерах модель не просто знает о вью — но и сама создает его, а вью зачастую создает экземпляры модели. Либо я неправильно разобрался в терминологии либо одно из двух...
В чем тут дело, подскажите плиз.


24.07.07 19:00: Перенесено модератором из '.NET' — AndrewVK
Re: Composite UI Application Block и MVP
От: Пётр Седов Россия  
Дата: 24.07.07 17:48
Оценка:
Здравствуйте, baranovskiyne, Вы писали:
B>в паттернах MVC и MVP модель (…) и View (…) — разорваны, т.е. модель не знает о вью и наоборот.
View знает про model.
P. S. Говорят не «разорваны», а «развязаны» («decoupled»).
Пётр Седов (ушёл с RSDN)
Re[2]: Composite UI Application Block и MVP
От: Predicate Россия  
Дата: 25.07.07 04:14
Оценка:
ПС>View знает про model.
ПС>P. S. Говорят не «разорваны», а «развязаны» («decoupled»).

Разве в MVP view знает про model? View знает только про Presenter, да и то, учитывая IoC, знает очень мало.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[3]: Composite UI Application Block и MVP
От: Пётр Седов Россия  
Дата: 25.07.07 08:49
Оценка:
Здравствуйте, Predicate, Вы писали:
ПС>>View знает про model.
P>Разве в MVP view знает про model? View знает только про Presenter, да и то, учитывая IoC, знает очень мало.
Я имел в виду именно MVC. А «MVP» у меня прочно ассоциируется с «most valuable professional», а не с «model-view-presenter» .
Пётр Седов (ушёл с RSDN)
Re[3]: Composite UI Application Block и MVP
От: IB Австрия http://rsdn.ru
Дата: 25.07.07 09:07
Оценка:
Здравствуйте, Predicate, Вы писали:

P>Разве в MVP view знает про model? View знает только про Presenter, да и то, учитывая IoC, знает очень мало.

В MVP модель не знает ни о ком, Presenter знает View но только через интерфейс IView (IoC), View же ничего не знает о презентере, и общается через события, на которые Presenter подписан.
В MVC знает или не знает о модели View зачисит от того активный View или нет.
... << RSDN@Home 1.2.0 alpha rev. 673>>
Мы уже победили, просто это еще не так заметно...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.