Структура пользовательского интерфейса и последствия для взаимодействия клиент / сервер
Вы говорите, что любое действие пользовательского интерфейса вызовет сервер (и, возможно, БД).Это означает, что взаимодействие с пользовательским интерфейсом все равно будет несколько медленным, и для этого потребуется обход в оба конца.
GWT особенно подходит для того, чтобы избежать как можно большего количества обращений к серверу и выполнять всю работу пользовательского интерфейса.на стороне клиента.В этой модели только информация, которая будет передаваться от клиента к серверу, является реальными данными, а не метаданными пользовательского интерфейса.GWT справится с этой задачей, но вы будете использовать инструмент низкого уровня, необходимый для расширенной оптимизации, который вы все равно не сможете выполнить ...
Фреймворк, такой как ZK или Vaadin, кажется более подходящим для того, что выхотеть сделать.На стороне клиента есть хорошие виджеты с богатым пользовательским интерфейсом, но вы манипулируете пользовательским интерфейсом со стороны сервера.Фреймворк управляет связью клиент / сервер для вас (не требуется REST, RPC или javascript).Основным ограничением этих тезисов является масштабируемость, со всеми тезисами в обе стороны.Но так как ваши требования навязывают такое болтливое поведение, вы могли бы действительно извлечь выгоду из предоставляемой ими абстракции, если в вашем случае они бесплатны.
Я попробовал и GWT, и Zk сделать некоторое подтверждение концепциимоя компания.Мы перестали выбирать GWT, потому что его можно было легко встроить в любой существующий пользовательский интерфейс и точно настроить то, что вы делаете ... В частности, избегайте как можно большего проникновения на сервер.Но ZK действительно проще и быстрее с точки зрения времени разработки.
Побочный эффект заключается в том, что это полностью решит проблему взаимодействия между клиентом и сервером, позволяя платформе оптимизировать ее (Zk способен разумно перегруппироваться).несколько событий пользовательского интерфейса перед отправкой их на сервер).
DB и ORM
Для проектирования БД я склонен думать, что использование мелкой гранулярности в БД сделает его оченьочень медленно.Если каждый виджет представляет собой одну или несколько строк в базе данных, вам придется выполнить много операций поиска, чтобы выполнить простейшую вещь.
Проблема в том, что ваш пользовательский интерфейс немного сложен с несколькими десятками элементов (несколькокнопки, флажки, метки и виджеты), составление экрана потребует много запросов к БД.Рендеринг только одной страницы может быть очень медленным, а масштабируемость - очень-очень плохой.
Я знаю это, потому что я работал над несколько общей системой отслеживания ошибок с аналогичными (но более простыми) требованиями, чем у вас, и у нас была именно эта проблема.
Поэтому я бы попытался описать пользовательский интерфейс в каком-либо шаблонном или XML-формате.Возможно, вы не будете показывать эти данные пользователю, предоставляя им хорошую абстракцию, но вместо того, чтобы выполнять много запросов только для одного экрана, вы сохраните весь экран как один большой двоичный объект.
Действительно тупойи основная реализация этого заключается в том, чтобы хранить файл HTML / CSS / PNG в вашей БД и загружать его по мере необходимости, при этом пользователь несет ответственность за создание этого файла HTML вручную.Конечно, это было бы ужасно для пользователя.Вот почему вам нужен приятный и модный редактор пользовательского интерфейса, который будет работать на собственном промежуточном формате.Еще одна глупая реализация - это своего рода шаблон вики.Это не то, что вам нужно, вам нужно больше.Но у вас есть идея, я бы искал в этом направлении ...
Что касается обслуживания и отладки, было бы намного проще описать весь интерфейс пользовательского интерфейса в нескольких файлах, чтобы понять, что на самом деле реализовано, чемчитать много табличных данных в предпочитаемом вами редакторе SQL.Пользователи могут экспортировать / импортировать формат для простого создания версий, резервного копирования или эксперимента.
Безопасность
Я бы сказал, от руки ... Потому что у вас сгенерирован универсальный пользовательский интерфейспользователю кажется вероятным, что безопасность также будет общей и зависит от содержимого базы данных.
Надеюсь, это поможет ...