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

StackOverflow https://stackoverflow.com/questions/414544

  •  03-07-2019
  •  | 
  •  

Вопрос

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

Это было полезно?

Решение

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

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

Другие советы

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

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

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

Преимущества заключаются в следующем :

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

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

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

Помимо того, что уже было упомянуто, есть также реализация MVC GXT, которую я рассмотрел здесь: http://code.google.com/events/io/2009/sessions/GoogleWebToolkitBestPractices.html .

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top