Я думаю, что лучше всего начать описывать то, что я делаю, и в конце собрать это вместе для большого вопроса:
Я создаю веб-приложение с 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?
Как бы вы это сделали?