Я работал в проектах, которые были написаны на struts, на webwork, на jsf даже — со struts и webwork связана большая кодогенерация, обидно когда она очень повторяющаяся (особенно в корпоративных системах), невысокий уровень абстракции, постоянная возня с HTML. jsf конечно самый реальный — нормальная компонентная модель — но гоняет много информации с помощью post, и еще мне показалось трудным как либо изменять либо самому писать компоненты, а готовые не всегда удолетворяют требованиям. Ну и вообще довольно запутанный фреймворк, хотя идеи правильные. С появлением facelets можно обьединять компоненты в более большие компоненты. Не видел tapestry, возможно тоже интересная штука (может кто скажет чего нибудь хорошего про него?).
Вобщем сейчас сел и ради интереса свой фреймворк написал, ничего сложного — компонентая модель, создаем обьекты в java коде, компонент рендерит себя в xml, этот xml в дальнейшем с помощью XSLT превращается в HTML. Работает это на spring MVC. Имеютя конвертеры и валидаторы как в JSF. Написал layout простенький, чтобы можно было формы создавать из java кода — работу с HTML вынес в шаблоны XSLT. В принципе благодаря такой архитектуре указывая у обьектов с помощью аннотаций некоторые параметры, у меня автоматом генерятся списочные формы и формы редактирования обьектов.
Свои компоненты соответственно писать несложно — надо создать java класс и соответствующий ему xslt файл.
Т.к. почти весь HTML создается в java коде, можно неплохих уровней абстракции достигать.
Кто что скажет про такую архитектуру? Или может кто расскажет о своих наработках или идеях?
Здравствуйте, Дмитрий В., Вы писали:
ДВ>Я работал в проектах, которые были написаны на struts, на webwork, на jsf даже — со struts и webwork связана большая кодогенерация, обидно когда она очень повторяющаяся (особенно в корпоративных системах), невысокий уровень абстракции, постоянная возня с HTML. jsf конечно самый реальный — нормальная компонентная модель — но гоняет много информации с помощью post, и еще мне показалось трудным как либо изменять либо самому писать компоненты, а готовые не всегда удолетворяют требованиям. Ну и вообще довольно запутанный фреймворк, хотя идеи правильные. С появлением facelets можно обьединять компоненты в более большие компоненты. Не видел tapestry, возможно тоже интересная штука (может кто скажет чего нибудь хорошего про него?).
ДВ>Вобщем сейчас сел и ради интереса свой фреймворк написал, ничего сложного — компонентая модель, создаем обьекты в java коде, компонент рендерит себя в xml, этот xml в дальнейшем с помощью XSLT превращается в HTML. Работает это на spring MVC. Имеютя конвертеры и валидаторы как в JSF. Написал layout простенький, чтобы можно было формы создавать из java кода — работу с HTML вынес в шаблоны XSLT. В принципе благодаря такой архитектуре указывая у обьектов с помощью аннотаций некоторые параметры, у меня автоматом генерятся списочные формы и формы редактирования обьектов. ДВ>Свои компоненты соответственно писать несложно — надо создать java класс и соответствующий ему xslt файл. ДВ>Т.к. почти весь HTML создается в java коде, можно неплохих уровней абстракции достигать.
ДВ>Кто что скажет про такую архитектуру? Или может кто расскажет о своих наработках или идеях?
Чего то не совсем понятно а чем это отличается от просто spring-web. Там есть способ работать с view в виде XSL преобразования. Есть интеграция с кучей других View. И валидация присутствует и bind, пропертей объекта на отображение. А что конкретно сделали вы без примеров не сильно ясно.
A>5-я же еще даже не бета? Или я что-то пропустил?
Можно уже работать с 5.0.3 + spring, hibernate интеграция, тесты. Первый релиз намечен на раннюю весну,
видимо где-то вначале апреля. AJAX будет летом, финальный релиз осенью.
Я сейчас уже пишу проект на нём, очень классно и глюков не встречал
Здравствуйте, Foror, Вы писали:
A>>5-я же еще даже не бета? Или я что-то пропустил?
F>Можно уже работать с 5.0.3 + spring, hibernate интеграция, тесты. Первый релиз намечен на раннюю весну, F>видимо где-то вначале апреля. AJAX будет летом, финальный релиз осенью.
ого... ничего себе у автора производительность совсем недавно еще было непонятно
что, а уже релиз... Поглядим...
F>Я сейчас уже пишу проект на нём, очень классно и глюков не встречал
Ну возможно... возможно... ибо то что я пробывал было сырое, хотя
IoC стал более удобным чем в 4-ке...
Здравствуйте, Nicht, Вы писали:
N>Чего то не совсем понятно а чем это отличается от просто spring-web. Там есть способ работать с view в виде XSL преобразования. Есть интеграция с кучей других View. И валидация присутствует и bind, пропертей объекта на отображение. А что конкретно сделали вы без примеров не сильно ясно.
Я уже сам начинаю честно говоря путаться, зачем так себе жизнь усложнил
Но в любом случа XSLT это не только шаблонный фреймворк, а это еще стимуляция того, чтобы я постоянно выделял компоненты, которые в случае чего можно будет переработать на более общий случай, вынося изменяемую часть во входные параметры — в результате имеем оттестированный компонент, который можно регулярно применять, экономя время и нервы при копипасте или написании нового кода.
Это я сделал со списочными формами, в результате чего избежал масштабного копипаста, сейчас вот делаю редактирование дерева — хочешь не хочешь, а он выносится в компонент.
Благодаря ООП у меня появляется компонентная модель на стороне контроллера, и благодаря XSLT компонентая модель на стороне view. Жаль в XSLT наследования нет, приходится изворачиваться.
В то же время HTML можно было бы генерить в самом компоненте, как это делается в JSF, но это не такой красивый и гибкий вариант как XSLT. А написание своих тегов в JSP тоже по-моему радости мало приносит. В случае надобности я любой свой компонент смогу отображать с помощью тегов JSP (на вход тегу можно передавать компонент, а он уже с помощью XSLT сгенерит HTML и выведет его)
Я уже написал клевый компонент maskField, dateField, у меня автоматически выделяется компонент, не проходящий валидацию на сервере, под ним пишется сообщение об ошибке — этого нет ни в тапестри ни в JSF, и реализация таких требований потребовала бы нетривиальных действий.
Абстракция! Вот чего хочу я достичь. Я долгое время разрабатываю на swing, поэтому для меня веб выглядит пугающим, приходится приводить к удобоваримому виду
Я нечто похожее делал по-другому.
В качестве view я использую freemarker. Там макрос (некий эквивалент пользовательским тегам в jsp) пишется очень легко, также есть функции, да и вообще — очень удобный шаблонный язык.
Так вот несколько хорошо продуманных интерфейсов в business layer + протестированные макросы и мы имеем универсальный способ очень быстрого создания постраничного просмотра коллекций объектов, редактирования, удаления и прочего.
Очень экономит время. Работа с макросами куда более приятная, чем написание своих тегов.
Здравствуйте, Дмитрий В, Вы писали:
ДВ>Абстракция! Вот чего хочу я достичь. Я долгое время разрабатываю на swing, поэтому для меня веб выглядит пугающим, приходится приводить к удобоваримому виду
Напишу клевый фреймворк, фирму свою открою, посажу студентов кодить, разработаю методологию — конвеер сделаю — они из готовых оттестированных компонент такие системы будут бахать!
Эх, размечтался чота я
Здравствуйте, Дмитрий В., Вы писали:
ДВ>Я работал в проектах, которые были написаны на struts, на webwork, на jsf даже — со struts и webwork связана большая кодогенерация, обидно когда она очень повторяющаяся (особенно в корпоративных системах), невысокий уровень абстракции, постоянная возня с HTML. jsf конечно самый реальный — нормальная компонентная модель — но гоняет много информации с помощью post, и еще мне показалось трудным как либо изменять либо самому писать компоненты, а готовые не всегда удолетворяют требованиям.
Значит плохо разбирались. Очень даже удобно писать свои компоненты на jsf.