Вы пытались использовать MVC для клиентского кода GWT?

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


person Sathish    schedule 05.01.2009    source источник


Ответы (6)


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

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

person rustyshelf    schedule 05.01.2009

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

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

person Glenn    schedule 05.01.2009

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

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

  • легко читаемый контроллер
  • Управление токенами истории
  • Контроллеры тестируются с помощью JMock (но не GwtTestCase).
  • Иерархический MVC
  • Простое наследование, чтобы начать кодировать ваше представление, контроллеры и модели.
person Community    schedule 26.03.2009

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

person Community    schedule 17.02.2009

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

Помимо того, что уже было упомянуто, существует также реализация GXT MVC, которую я рассмотрел здесь: 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

person Daniel Vaughan    schedule 04.03.2010

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

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

person Konstantin Solomatov    schedule 14.03.2013