Здравствуйте, maxkar, Вы писали:
H>>Теорию я сейчас сам почитаю ) , интересует именно практический опыт.
M>Использовал (уже было это legacy). В трезвом уме никогда бы не взял его в начальный проект (даже без опыта использования).
Мы сейчас пилим что-то вроде ERP на vaadin. ИМХО, это лучшее что пробовали. Во всех остальных случаях гемора было в разы больше.
M> * Если вдруг у вас сотрудник посередине рабочего дня ушел в отпуск и потом вернулся, ваадиновская сессия будет потеряна. Соответственно, сотрудник будет созерцать "take note on unsaved data" без возможности повторить операцию (нужно запускать приложение и все делать ручками)
Да, это засада. У себя решили увеличением жизни сессии
M> * Фильтрация на клиенте списка через сервер (банальная фильтр по подстроке, сокращает выбор из списка)
Ну так это нормально. Vaadin серверный фреймворк. Никаких проблем с этим не наблюдается.
M> * Я completion так сделать и не смог нормальный (выбор в одном поле может заполнять несколько полей). Он к чему-то какими-то гвоздями прибит. Т.е. "модель" + "визуализатор" оно сделать не смогло. Это даже не говоря о том, чтобы выделять найденную подстроку.
Тут вообще вроде нет проблем. Может поясните на примере, что было проблемой?
M> * Zoom-in + Zoom-out приводит к потрясающим скроллбарам на каждом компоненте
Такой проблемы не было ни разу. Пишем проект начиная с версии 6.5. Сейчас переводим на 7-ку. Вероятно вы что-то не так делаете.
M> * Layout клиента в пикселях (не понятно, на каком шрифте вычисленных)... Поэтому ХЗ, что и куда поедет.
Так же не сталкивались. Даже если это и так, то проблем это не дает ни каких.
M> * Вообще Layout отлаживать нетривиально.
Зачем их вообще отлаживать? Какая-то надуманная проблема )
M> * У них была какая-то забористая трава, когда они сочиняли таблицы. У колонок таблицы и у набора полей в одной строке своя отдельная жизнь. Для реализации таблицы нужно 3 модели реализовать (минимум!).
Какие 3 модели? Вы собственные реализации таблиц делаете? Для обычного использования таблиц об этом вообще не думаешь.
M> * Валидация у таблиц приниципиально отсутствует (т.е. непонятно, куда ее отображать).
Ни разу не потребовалось. Не подскажете юзкейс где оно надо?
M> * Судя по всему, "form validation" прибит гвоздями к фреймворку. И его отображение — тоже. Поэтому если я хочу выводить все warnings в отдельной области, нужно постараться.
Да, это тоже засада. У одного заказчика операторы "не видели" ярко красный кружок с восклицательным знаком возле ошибочного поля)))
M> * Их Property как-то странно типизированы. Половина property сделана generic (то ли method property, то ли что-то еще). Зато сам интерфейс property работает с object. А еще в этом Property есть метод setReadOnly. Рационального объяснения наличию такого метода в интерфейсе Property я не нашел.
А вот мы везде используем этот метод. Ибо удобно закрывать то что надо.
M> * С клавиатурой плохо дружит. Какие-то окна пооткрывал, потом позакрывал. Потом нажал пробел. Интерфейс куда-то пропал (небольшой кусок где-то было видно, остального — нет).
Думаю вы что-то накосячили с ней ибо вот от этого момента вообще тащимся, вместе с заказчиками. Т.к. работа с клавой настолько хорошая, что оператор может работать клавой, БЕЗ МЫШКИ!, в браузере! Раньше такое получалось только в десктоп приложениях. Операторам реально нравится.
M> * В 7-ке появилась куча статических аксессоров и черной магии. Например, у нас упали несколько тестов UI-компонентов. Там где-то конвертеры (то ли статические, то ли threadlocal) не зарегистрировались.
Тут не могу пояснить, ибо во внктрях небыло необходимости копаться. Все и так отлично работает.
M> * Я не понял, как в application что-нибудь нормально заинжектить (глобальный на все приложение объект/коннектор/пул и т.п.). В сервлетах я это могу из startup listener поднять (вместе с сервлетами
). Как в vaadin'е — так сразу и не нашел. Если знаете, делитесь информацией.
Ну это вообще детский сад. Про статик сами найдете где почитать, или подсказать? ))) Хотя у нас на спринге все инжектится, и проблем нет.
M> * Я не разбирался, что там с security. Можно ли какой-нибудь запрос куда-нибудь подменить. И как оно с текущим Application связано.
Серверный же фреймворк. Вместе со Spring Security проблем никаких.
M> * Challenge/response authentication не так просто изобразить. Нужно кастомный клиентский компонент писать. Брать challenge/response или пересылать пароль по http(s) — другой вопрос.
Опять же, поясните, что именно у вас не получилось?
M> * Что-нибудь глобальное на клиенте прикрутить к сети — то еще приключение (в GWT, впрочем, тоже). Хотелось бы какое-нибудь банальное окно "а у вас связи нет" выводить с возможностью повторить запрос, например.
Да, это тоже засада. Вроде как в 7-й версии можно перехватить это событие, и как-то обработать. Еще не до конца разобрались.
Так же в 7-й версии теперь можно писать клиентские приложения без сервера, возможно в этом направлении и надо покопать.
M> * Касательно аутентификации. Single-page application не дает сделать более менее безопасную галочку "save password". Нет, я понимаю, что это сразу небезопасно. Но хотя бы по сети этот токен не гонять на каждый запрос, а только при входе (банальный workflow: request -> redirect <...>/auth -> redirect application). Кука с долгоиграющим токеном дается только на <...>/auth и не светится в каждом обмене.
Это уже не актуально. 7-я версия уже не Single-page application.
M>Вот как-то так. Это на маленьком простом приложении. Может, еще чего забыл.
Мы сделали 4 проекта на Vaadin. 2 из них это админки, хотя и довольно разувесистые.
Один проект, что-то вроде 1С торговля и склад. И самый большой проект щас пилим. Что-то вроде ERP.
До этого был стандартный подход. Клиент отдельно, сервисы отдельно и т.д.
После этого дикого, не прекращающегося кошмара с верстальщиками и прочей фигней, просто вздохнули спокойно.
Вопросы типа "а у нас тут поехала форма логина в новом фирефоксе" или "почему в эксплорере, только после 3-4 перезагрузок страницы все начинает работать" просто исчезли как класс. Скорость разработки прототипа, а потом проекта на нем, возросла реально в разы.
Да, это не идеальная технология. Да таких и не бывает в природе. Но делать на ваадине всякие админки и интерпрайзные решения просто офигенно удобно. Быстро, эффективно, много готовых компонентов.
И кстати, на ERP многие работают с планшетов через GPRS. Проблем нет вообще. Некоторые даже умудряются с мобильников там что-то делать)