Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > стоит ли использовать JSF, Spring, Hipermate


Автор: ZMaximI 3.12.2008, 12:48
Добрый день !

У меня есть задумка реализовать достаточно большой интернет-проект.
Ориентировочное количество одновременно работающих пользователей около 10 000, следовательно ОЧЕНЬ интенсивная работа с БД.

Я несколько в растерянности в выборе технологии :
- написать все на старых добрых jsp и не ломать голову
- на чистом jsf
- Spring framework
????

Так вот, помогите, пожалуйста, определиться, стоит ли использовать JSF, Spring, Hipermate или реализовать все на стандартном JSP ?

Спасибо.

Автор: necromancer 3.12.2008, 12:53
JSF тебе поможет если у тебя сложный веб интерфейс.
Если все очень просто то JSP, если где то между то SpringMVC
так же вполне можно писать используя несколкьо техноолгий, 
например для простых страниц JSP,а для админ консоли что то потяжелее.

это сугубо ИМХО.
Далее писать следует на том что хорошо знаешь иначе огребешь кучу проблем.

Автор: ZMaximI 3.12.2008, 13:04
necromancer, спасибо.
С JSF как бы все красиво, вот только меня терзают смутные сомнения по поводу производительности ...

Автор: skhilkov 3.12.2008, 13:57
А из-за чего может производительноть быть ниже?
Все равно все в сервлеты перекомпилится )
А если честно, мне тоже интересно сказывается ли использование JSF или других фреймворков на производительности....

Автор: v2v 3.12.2008, 14:34
для задач как у тебя использовать hibenrate не рекомендутся...только чистый jdbc.

Автор: ZMaximI 3.12.2008, 15:45
Спасибо большое, с представлением немного успокоился .., JSP, а для красоты GWT ...

Теперь возник вопрос такого плана :
    у приложения будет свой "движок", состоящий из нескольких модулей.
    Все эти модули будут НЕПРЕРЫВНО выполнять определенный задачи и результаты свой работы, должны будут, опять же НЕПРЕРЫВНО сохранять в БД ...

очень не хочется заморачиваться с EJB - большого смысла в них нет ...
а непрерывная работа с бд вообще меня пугает ...

Подскажите, пожалуйста, кто что думает по этому поводу ?

Спасибо.

Автор: necromancer 3.12.2008, 16:42
>Спасибо большое, с представлением немного успокоился, JSP, а для красоты GWT ...
замучаешься!!!

если хочется JSF то используй соотв библиотеки - Richfaces, IceFaces, Woodstock, Facelets

производительность JSF более чем 2 раза ниже чем JSP
причина: востановление дерева компонент, обработка событий и прочее прочее.

используй JDBC и Hibernate
для быстрых выборок вставок - JDBC
для админки и прочего менее резвого хибернату.
Набор классов почти не изменится а рутины убавится на 40%

Автор: Asal 3.12.2008, 16:48
Цитата(ZMaximI @  3.12.2008,  15:45 Найти цитируемый пост)
Спасибо большое, с представлением немного успокоился ..,

Вилами по воде...
Еще 100 раз можете передумать
я использую Velocity + jQuery

Цитата(ZMaximI @  3.12.2008,  15:45 Найти цитируемый пост)
очень не хочется заморачиваться с EJB - большого смысла в них нет ...

Ну не скажите...
Раз у Вас
Цитата(ZMaximI @  3.12.2008,  15:45 Найти цитируемый пост)
 Все эти модули будут НЕПРЕРЫВНО выполнять

и
Цитата(ZMaximI @  3.12.2008,  15:45 Найти цитируемый пост)
опять же НЕПРЕРЫВНО сохранять в БД ...

то возникнет вопрос с транзакциями, тут Вы и вспомните про EJB.
Я вопрос с транзакциями решил с его помощью.

P.S. я не профессионал, поэтому "гуру" поправте коли не прав

Добавлено через 3 минуты и 33 секунды
Цитата(necromancer @  3.12.2008,  16:42 Найти цитируемый пост)
используй JDBC и Hibernate

Разве Hibernate настолько медлителен?
Будет ли bind из БД в объект раелизован бустрее чем это делает Hibernate?
А как насчет кэширования?
А скорость разроботки?

Автор: ZMaximI 3.12.2008, 17:09
Цитата(Asal @  3.12.2008,  16:48 Найти цитируемый пост)
то возникнет вопрос с транзакциями, тут Вы и вспомните про EJB.
да, тут конечно я согласен, может возникнуть и такая очень неприятная ситуация ...., погорячился я немного, спасибо

Автор: necromancer 3.12.2008, 17:25
Hibernate по определению медленее.
Да бинд с испоьлзованием JDBC будет выполнен быстрее. (так как хибернатат использует прокси и рефлексию)
Транзакции можно использовать и без EJB ( smile ), тот же hibernate прекрастно справляется, да и на JDBC проблем с транзакциями нет.

Для чего может понадобится EJB? ну для масштабирования и кэширования.
Хотя и кэширование можно решить при помощи различных доп фреймворков, тот же JBoss Cache

>я использую Velocity + jQuery
это View, а что же контроллер? =)

JSF предлагает оличную компонентную и событийную модель.

К сожалению своему небыо времени и возможности изучить SpringMVC.

Любые надстройки над системой, теже аспекты, анотации и прочее (даже модные (for earch)) тормозят выполнение программы.

Мой совет напишите как знаете/можете а затем при возникновении узких мест либо профилируете а затем заменяете,  либо делаете load balancing

to Asal:
непрерывное сохранение не подразумевает обязательное использование транзакций. Вдруг это атомарная операция вставки(лог например).
Для того же лога транзакции это сорее помеха, так как независимо от результата необходимо знать о попытке действа.
Так же можно сделать это атомарной опрецией и без использования транзакций в яве путем выноса сохраниений через хранимые процедуры.

>А как насчет кэширования?
нет проблем. кэш первого и второго уровня в hibernate. Плюс никто не запрещает использовать кэш для необновляемых элементов.
>А скорость разроботки? 
С этим нельзя не поспорить. Хотя написать вывод из базы записей в консоль на JDBC будет быстрее, в самом простом случае =)


Чем реально может помочь Hibernate, EJB так это связанные объекты и коллекции.

Автор: Asal 3.12.2008, 17:48
Цитата(necromancer @  3.12.2008,  17:25 Найти цитируемый пост)
Транзакции можно использовать и без EJB (  ), тот же hibernate прекрастно справляетс

дык речь идет про отказ от hibernate и использования чистого JDBC
Цитата(necromancer @  3.12.2008,  17:25 Найти цитируемый пост)
да и на JDBC проблем с транзакциями нет

вот чего не знаю, с тем спорить не буду  smile 
Цитата(necromancer @  3.12.2008,  17:25 Найти цитируемый пост)
это View, а что же контроллер?

Spring
Цитата(necromancer @  3.12.2008,  17:25 Найти цитируемый пост)
Мой совет напишите как знаете/можете а затем при возникновении узких мест либо профилируете а затем заменяете,  либо делаете load balancing

+1, все места сразу не заткнуть, если нет опыта в размере состава из 50 вогонов и маленькой тележки

Цитата(necromancer @  3.12.2008,  17:25 Найти цитируемый пост)
Вдруг это атомарная операция вставки(лог например).

не понял про "атомы"


Цитата(necromancer @  3.12.2008,  17:25 Найти цитируемый пост)
С этим нельзя не поспорить. Хотя написать вывод из базы записей в консоль на JDBC будет быстрее, в самом простом случае =)

"С этим нельзя НЕ поспорить" или "с этим нельзя поспорить"

Автор: ZMaximI 3.12.2008, 18:06
Господа, вот теперь я реально запутался .... 

Цитата(necromancer @  3.12.2008,  17:25 Найти цитируемый пост)
Мой совет напишите как знаете/можете а затем при возникновении узких мест либо профилируете а затем заменяете,  либо делаете load balancing

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

Автор: Asal 3.12.2008, 18:29
Цитата(necromancer @  3.12.2008,  17:25 Найти цитируемый пост)
Для того же лога транзакции это сорее помеха, так как независимо от результата необходимо знать о попытке действа.

Лог можно и в СУБД вести

Добавлено @ 18:36
Цитата(ZMaximI @  3.12.2008,  18:06 Найти цитируемый пост)
движок будет состоять из нескольких модулей

Возможно тут может пригодиться EJB
Цитата(ZMaximI @  3.12.2008,  18:06 Найти цитируемый пост)
хочется написать максимально близко к правильному ...

надо начинать писать, 150 тыщ раз еще будете переделывать, процесс не быстрый...

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

OffTop:
у меня используется
View: Velocity + jQuery
Servlet: Spring
DataBase: EJB + JPA + TopLink
Security: Spring Security
J2EE: GlassFish
Searh Engine: Compass (надстройка для Lucene)

Гуру поправьте, пож, если в чем-то выбор не правильный

Автор: polosatij 3.12.2008, 22:26
Цитата(Asal @  3.12.2008,  18:29 Найти цитируемый пост)
Гуру поправьте, пож, если в чем-то выбор не правильный


тебе никто не подскажет, правильный ли твой выбор.. всё будет зависить от прямых рук и затраченного времени  smile 

ZMaximI, фуф.. чувствуется, что ты пишешь первый проект.. ты уверен, что наберёшь 10.000 человек/ минуту? если ты их наберёшь, наймёшь людей и перепишешь приложение заного, т.к. оно себя в сотни раз окупит  smile 

Автор: Vasay 3.12.2008, 22:57
Spring   ( Spring MVC в частности ) однозначно помехой не будет и снимет часть головной боли.

JSF в топку, вещь совершенно не предназначенная для web проектов.

Используйте Hibernate, если поймете что где-то узкое место - потюнингуете, перепишите на jdbc.

view - я за Velocity.

Применение ajax - местами, точно зная, что не во вред. 

Автор: Foror 4.12.2008, 09:48
Откуда такая уверенность про 10 000 человек? smile Если начнешь использовать то, что не знаешь, то вместо разработки проекта погрязнешь в изучении фреймворков и потратишь на это как минимум месяцев 6. Если есть знания JSP и SQL, то бери их в руки и ничего не выдумывай. Когда будет 10 000 человек, наймешь тех, кто имеет опыт в крутых технологиях smile Либо сейчас нанимай тех, кто умеет программировать под высокие нагрузки.

Если хочется просто изучить новые технологии, то посмотри http://tapestry.apache.org, она уже релиз кандидат, плюс интегрируется со spring. Автор утверждает, что фреймворк работает шустрее JSP. Ну и я конечно в ближайшее время выложу как contribute наработки в opensoure со своего проекта getdone.ru. Щас вот только под maven всё переведу smile

Автор: ZMaximI 4.12.2008, 11:49
Цитата(polosatij @  3.12.2008,  22:26 Найти цитируемый пост)
фуф.. чувствуется, что ты пишешь первый проект.. 


Втом-то и дело, что проект у меня далеко не первый ...
Я сейчас веду разработки в нескольких системах, которые юзают около 8 - 10 тыс. пользователей, НО эти системы корпоративные, они крутятся на сумасшедших мощностях, следовательно особыз проблем с производительностью нет. В этих системах я использую и JSF и Spring ..., но, извините повторюсь, я не замечу особого снижения производительности, в силу использования достаточно мощных серверов и каналов связи ...

С учетом того, что у меня нет в распоряжении  HP BladeSystem , я и решил посоветоваться, есть ли смысл использования этих так называемых "крутых технологий" при больших нагрузках и сравнительно малых мощностях.

Цитата(Foror @  4.12.2008,  09:48 Найти цитируемый пост)
наймешь тех, кто имеет опыт в крутых технологиях

на крутых технологиях я и сам напишу, только будет ли в этом смысл ... "не все то золото, что блестит"


Автор: Foror 4.12.2008, 13:07
Понятно, у меня нет опыта на высоких нагрузках, но в целом я это всё представляю как tapestry5+hibernate, плюс кластер томката для сессий пользователя. Врубить распределенный ehcache для кеширования доменов hibernate, чтобы в базу меньше лазили. Возможно узкие места вынести на PL/SQL. И не знаю понадобится ли делать кластер на postgres...

А если у вас в базу будут постоянно лазить, то вам лучше такие вопросы на sql.ru задавать smile Либо отказаться от sql и использовать что-нить типа http://hadoop.apache.org/core/. Может стоит посмотреть также на модные нынче cloud computing у гугла или амазона.

Автор: ZMaximI 4.12.2008, 13:22
Всем спасибо, за ответы.
Вопрос снят.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)