Spring3 против Гобелена 5.3

В настоящее время я пытаюсь сравнить Spring3 с Tapestry 5.3. Я пользуюсь Tapestry с 2003 года, поэтому склонен иметь предвзятое мнение и только потому, что у меня нет опыта работы со Spring. Я вижу, что Spring очень широко используется большинством компаний, пишущих Java-приложения, поэтому это заставило меня взглянуть на него для моего нового веб-приложения. Моя текущая цель - создать очень богатое приложение javascript с небольшой конфигурацией и широким набором доступных компонентов. Моя самая большая претензия к Tapestry5 заключалась в том, что он был разработан для работы с библиотекой Prototype.

Может ли кто-нибудь предоставить мне положительные и отрицательные стороны Spring3 и, возможно, почему компания решила построить Spring3 вместо Tapestry5? Я искал в Google, и оказалось, что единственные сравнения, которые я нашел, датированы. Спасибо.


person Code Junkie    schedule 08.03.2013    source источник
comment
Это фактически тот же вопрос, заданный здесь, stackoverflow.com /questions/2845271/struts-2-or-jsf/ , но с разными игроками. Все еще держится.   -  person Will Hartung    schedule 08.03.2013
comment
К вашему сведению: новая предстоящая версия Tapestry (5.4) ориентирована на javascript, поэтому, возможно, ее тоже стоит проверить.   -  person Nathan Q    schedule 14.03.2013


Ответы (1)


Мне нужно было сделать небольшое доказательство концепции для компании, в которой я работаю. Я просмотрел как Spring MVC 3, так и Tapestry 5.

Для тех, кто не использовал Tapestry, у него есть действительно хорошие соглашения для потока пользовательского интерфейса, например. кнопки нажаты или по ссылкам. Также хорошо, что все в вашем классе Page является ThreadLocal, поэтому вам не нужно беспокоиться о параллелизме на этом уровне.

С другой стороны, мне не нравилась поддержка Tapestry Ajax. В нем есть свои теги для выполнения ajax-операций (зоны и т.д.), но это сложно сделать

$.ajax({
  url: "tapestry_page",
  success: function(result) {
    // do something with json result
  }
});

из-за типов возвращаемых данных, принимаемых гобеленом. Вы сказали, что ваш проект будет насыщен javascript, и это может означать много ajax. Только по этой причине я бы выбрал Spring. Вы можете просто аннотировать свои методы @Controller с помощью @ResponseBody, и все, что вы вернете, будет записано непосредственно в тело ответа. Это полезно для прямого написания json или xml (который в большинстве случаев генерируется автоматически с помощью Jackson или JAXB).

С Spring самым большим плюсом является то, что это очень зрелый проект, и поэтому все, что вам нужно, возможно, кому-то понадобилось до вас, и решение доступно (не то, чтобы то же самое не относится к Tapestry, но для Spring существует больше документации).

Несколько недостатков Spring: он очень тесно связан с сервлетами, doGet и doPost, и такие вещи, как обработка форм, не выполняются так согласованно, как в Жизненный цикл формы Tapestry. Если вы выполняете много синхронных операций, концепция страницы Tapestry очень хороша и, возможно, вам подойдет.

Я не уверен, что Tapestry достигла точки, когда вы можете настроить все свое приложение без xml, но Spring удалось. Это может быть преимуществом для вас.

Мои 2 цента.

person Sotirios Delimanolis    schedule 08.03.2013
comment
Спасибо, Сотириос, мне определенно интересно посмотреть, как Spring обрабатывает их ajax. Обработка форм Tapestry великолепна, поэтому, поскольку это единственная вещь, с которой я когда-либо работал, я не совсем уверен, чего ожидать от других фреймворков. Tapestry в основном настраивается в java, за исключением нескольких других мест, таких как web-inf tapestry.apache.org /configuration.html Я думаю, что для чистого опыта мне лучше всего попробовать Spring. - person Code Junkie; 08.03.2013
comment
Обработка формы в Spring требует, чтобы вы прошли параметры запроса (для входных данных), но вы можете легко внедрить их с помощью аннотации @RequestParam. - person Sotirios Delimanolis; 08.03.2013
comment
Хорошо сказано. Я использую гобелен с версии 5.0.x, и единственным XML, с которым я имел дело для настройки своего приложения, был файл web.xml. - person Muhammad Gelbana; 08.03.2013
comment
Tapestry 5.4 будет иметь лучшую поддержку JavaScript и будет поддерживать несколько фреймворков JavaScript с поддержкой jQuery и Prototype из коробки. См. tapestryjava.blogspot.de/2013. /01/ для получения подробной информации. - person Uli; 20.03.2013