Netty - Как лучше всего спроектировать клиент-сервер для настольных приложений с большим количеством POJO - PullRequest
3 голосов
/ 09 января 2012

У меня есть настольный клиент, который будет использовать Netty для подключения к серверу (ваши основные настройки клиент / сервер).У клиента есть много объектов (POJO), чтобы не только использовать CRUD, но и выполнять некоторую сложную бизнес-логику, поэтому я не могу просто заставить клиентов общаться напрямую с базой данных.Кроме того, я не хочу размещать всю логику SQL на клиентах.

Так, например, у меня есть:

boolean RaceTrackDAO.saveTrack(Track track);
int RaceTrackDAO.getFastestLapTime(Track track);
Driver[] RaceTrackDAO.getTopDriversForTrack(int trackID)
...

boolean DriverDAO.saveDriver(Driver driver);
bollean DriverDAO.updateDriver(Driver driver);
Driver[] DriverDAO.getTopTenDrivers(Driver driver);
...

и так далее ...

В клиенте у меня есть:

someUICode()
{
  ...
  Driver[] topTenDrivers = DriverDAO.getTopTenDrivers();
  ...
}

Вопрос в том, как мне организовать / внедрить слой DriverDAO для использования Netty в системе клиент / сервер?

Я понимаю Вы можете отправлять POJO через канал , но в документации действительно говорится только об отправке одного типа POJO.Я провел некоторые исследования и обнаружил, что есть все варианты.Есть шаблоны команд и состояний, которые выглядят интересно.

Ключ для меня - избегать как можно большего количества стандартного кодирования.Я знаю, что у Netty есть встроенные инструменты для маршаллизации и демаршализации POJO через сериализацию.Это самая легкая часть.Я просто не хочу зацикливаться на миллионах операторов if, чтобы иметь дело со всеми возможными pojo (и знать, какие внутренние вызовы нужно делать).

Ключ для меня состоит в том, чтобы поддерживать целостность в целом.Производительность приятно иметь, но системе никогда не понадобится обрабатывать тысячи соединений одновременно, так что здесь есть немного свободы.

Учитывая все вышесказанное, какова лучшая архитектура для проектирования такой системы с использованием Netty на уровне DAO?

1 Ответ

2 голосов
/ 09 января 2012

Если вы хотите сохранить простоту, вы можете использовать RMI (?) Или сериализовать свой объект через Netty. Таким образом, вам не нужно иметь возможность обрабатывать все возможные объекты. (Вы все равно должны стараться поддерживать их на приемлемом уровне)

...