Architechture / Best Practice - Лучший метод / шаблон для использования в DTO в веб-приложении GWT - PullRequest
1 голос
/ 16 февраля 2012

Я думаю, что лучше всего начать описывать то, что я делаю, и в конце собрать это вместе для большого вопроса:

Я создаю веб-приложение с GWT от Google и инкапсулирую определенный код для повторного использования, если я разрабатываю мобильные клиенты. Пока у меня есть следующие проекты:

app.core - содержит все объекты данных (POJO), такие как BasketItem, UserAddress и т. Д.

app.dao - доступ к данным. Это ссылается на вышеупомянутый проект и имеет классы, подобные ItemDAO, которые заботятся о сохранении связанных элементов, например void persistItem (Элемент BasketItem, Пользователь пользователя)

app.webapp - Веб-приложение GWT. Это включает в себя 2 вышеупомянутых класса. Я использую GWT-RPC между клиент-сервером и серверными методами, вызывающими DAO для сохранения / извлечения / любых данных app.server - серверное приложение RESTful, которое также использует DAO, которое предложит интерфейс на основе REST для выполнения тех же операций с данными для мобильных / других клиентов

Проблема: GWT лучше всего работает при передаче объектов данных между клиентом и сервером, если они реализуют GWT IsSerializable (на самом деле у меня возникают проблемы, когда я использую Serializable). Однако я не хочу добавлять файлы, связанные с GWT, в проект app.core, а также не хочу, чтобы app.dao и т. Д. Полагались на IsSerializable. Как я могу лучше всего инкапсулировать dto во все приложение, все еще используя IsSerializable, так как он лучше всего работает в GWT. Должен ли я продолжать расширять основные объекты в app.webapp и реализовывать IsSerializable?

Как бы вы это сделали?

1 Ответ

2 голосов
/ 16 февраля 2012

Я решил полностью исключить GWT из моего серверного кода. На самом деле вы упомянули причину - вы говорите о реализации интерфейса GWT-RPC, а затем о интерфейсе REST, который делает то же самое. Я решил просто создать интерфейс REST, отказаться от GWT-RPC и RequestFactory и использовать POJ-DTO. GWT AutoBean и RequestBuilder прекрасно справляются с перемещением между Json и Java. Думаю, гораздо проще и понятнее избежать прямой связи между клиентом и сервером (кроме как через ваши POJO DTO). Также было бы хорошо, когда я хочу настроить небольшой аспект операции или добавить кеширование или что-то еще, чтобы просто иметь возможность приступить к работе и сделать это.

Кроме того, внешняя документация для моего API - это просто javadoc из моих внутренних методов доступа!

...