Вы пытались использовать MVC для кода клиента GWT? - PullRequest
11 голосов
/ 06 января 2009

Вы пытались использовать MVC или любой другой шаблон пользовательского интерфейса для кода клиента GWT. С какими подводными камнями / преимуществами вы столкнулись в разных подходах?

Ответы [ 6 ]

7 голосов
/ 06 января 2009

Я думаю, вам нужно относиться к GWT так же, как к любой другой структуре пользовательского интерфейса, например, к Swing, Cocoa и т. Д. Все, что имеет смысл в этих средах с точки зрения MVC (или других парадигм), также имеет смысл в GWT. Я думаю, что иногда люди слишком увлекаются MVC, и мне нравится, как он работает в Какао, больше, чем в большинстве фреймворков. Вы создаете представление, у вас есть ViewController, который контролирует все поведение представления, а затем у вас есть объекты модели со всеми вашими данными. Я не думаю, что вам нужно быть догматичным в отношении того, где вся ваша бизнес-логика, она просто должна быть там, где это имеет смысл.

С точки зрения подводных камней, главная из которых вы столкнетесь с тем, что GWT - это чисто интерфейсная технология, поэтому технически серверная часть находится где-то на сервере. Я не вижу в этом особого отличия от написания клиентского серверного приложения, которое хранит свои данные в облаке. Разница в том, что GWT скомпилирован в javascript и имеет все ограничения веб-приложения на javascript, так что будут некоторые вещи, которые вы просто не сможете сделать на внешнем интерфейсе. Допустим, например, что вы хотите создать PDF-файл и показать, что для пользователя вы не можете сделать это в GWT, вам нужно вызвать серверную часть, чтобы сделать это за вас. С другой стороны, в приложении Swing вы можете использовать itext и делать это на стороне клиента.

5 голосов
/ 06 января 2009

Шаблон MVC для GWT обсуждается в этом вопросе , в котором также есть ссылка на этот подробный пост в блоге .

Единственное, что я хотел бы добавить, это то, что код на стороне клиента можно считать «V» в «MVC», что может изменить то, как вы на него смотрите. Думая о клиентском коде как о своем собственном вложенном компоненте MVC, ну, это Java, он объектно-ориентированный, так что он может быть спроектирован во многом как приложение Swing. Я думаю, что в ваших интересах вытащить как можно больше кода контроллера из представления для обработки GWT RPC. Модель иногда более проблематична, потому что вам, возможно, придется решить, хотите ли вы ее на сервере, а не на клиенте. Или создайте модельный прокси и т. Д.

1 голос
/ 26 марта 2009

http://code.google.com/p/gwt-mvc/ может помочь вам.

Преимущества:

  • легко читаемый контроллер
  • История управления токенами
  • Контроллеры тестируются с JMock (но не GwtTestCase)
  • Иерархический MVC
  • Простое наследование для начала кодирования вашего вида, контроллеров и моделей.
0 голосов
/ 14 марта 2013

Вы можете взглянуть на JetPad-Mappers, минималистичную инфраструктуру MVC, разработанную в JetBrains и используемую в нескольких (в настоящее время не выпущенных) продуктах.

Отказ от ответственности, я участвую в разработке этого фреймворка.

0 голосов
/ 04 марта 2010

Использование какого-либо шаблона типа MVC / MVP действительно важно, когда приложения GWT выходят за рамки самого маленького проекта, иначе вы просто теряете контроль над происходящим.

Помимо того, что уже было упомянуто, есть также реализация MVC GXT, которую я рассмотрел здесь: http://www.bristol -gtug.org /? P = 45

Этот разговор в Google IO в прошлом году заставил многих задуматься о MVC / MVP в GWT: http://code.google.com/events/io/2009/sessions/GoogleWebToolkitBestPractices.html.

Недавно я заметил, что в документации GWT также есть учебник по архитектуре MVP, который является хорошим началом: http://code.google.com/webtoolkit/doc/latest/tutorial/mvp-architecture.html

0 голосов
/ 17 февраля 2009

Вы пробовали GWTruts (http://sourceforge.net/projects/gwtruts/)? Это также среда GWT MVC с открытым исходным кодом, которая разделяет View и Controller в GWT

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...