![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| Уфф |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 6.12.2009 Репутация: нет Всего: нет |
Здравствуйте,
Подскажите пожалуйста с какой стороны подойти к модульной разработке сайта в J2EE? Тоесть есть задача создать некий движек сайта на который можно в дальнейшем дописывать независимые модули по типу Новости, каталог, авторизация и т.д. Какая должна быть структура всей логики приложения? Кто имеет опыт или просто может развить данную тему, плиз посоветуйте Технологии не важны, предложите что считаете лучшим/удобный лично с вашей точки срения если не сложно на расскажите о самой структуре. Спасибо |
|||
|
||||
| MaxPayneC |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 324 Регистрация: 18.2.2006 Репутация: 3 Всего: 9 |
Обратите внимание на фреймворки Struts 2 и JSF. Общая архитектура сайта будет представлять из себя:
Бины - модель, основные сущности вашего сайта (такие как новость, сообщение, пользователь и т.п.) Action-ы Struts - контроллер, занимаются обработкой запроса пользователя и подготовка данных для представления (view). JSPшки - представление, собственно рисуют хтмл-код, который увидит пользователь. Более подробно почитайте тут: http://ru.wikipedia.org/wiki/MVC http://struts.apache.org/ http://java.sun.com/javaee/javaserverfaces/ (по поводу этой технологии подробностей рассказать не могу, не приходилось работать с ней). |
|||
|
||||
| garbuz |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 677 Регистрация: 22.1.2008 Репутация: 8 Всего: 11 |
Тут не все так просто как может казаться.
Если пользоваться готовым фрэймворком, типа стратса или спринга, то все равно постоянно придется пилить все приложение - тут кусочек, там кусочек, тут код переписать, там конфиг подправить. Со временем приложение разрастается, и в голове уже трудно удержать все моменты. Что-то подобное реализовано в порталах - WebSphere Portal, Liferay. Но! WebSphere безумно дорогая, LifeRay был сыроват, не знаю как сейчас. Про другие реализации порталов сказать не могу. Есть еще такая штука как OSGi, вот там действительно модельная архитектура, но не знаю, как это подойдет для создания сайта, скорее это немного для других целей, хотя кто знает. По-моему самый удачный вариант, это сесть и продумать архитектуру и структуру сайта от начала и до конца, а затем ее реализовывать. Понятное дело, что с самого начала все правильно не выйдет, но будет какая-то общая линия, которой можно придерживаться. Смотреть естественно надо в сторону MVC, как уже сказано выше. |
|||
|
||||
| Kangaroo |
|
|||
|
AA - Aussie Animal ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2042 Регистрация: 7.10.2006 Где: US Репутация: 14 Всего: 104 |
Начать можно с прочтения темы-сериала, расписана работа по созданию такой системы с нуля.
Действие начинается с 3-4 страницы темы. Это сообщение отредактировал(а) Kangaroo - 26.1.2010, 03:21 -------------------- Lost.... |
|||
|
||||
| afon |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 85 Регистрация: 5.4.2008 Где: Украина, Киев Репутация: нет Всего: 1 |
А можно немного отвелеченный вопрос?
Это вы сами себе придумали задачу, чтобы легче было жить врамках разработки проекта, или это именно задача вашего проекта, то есть - главная задача? Просто праздный инетерес. |
|||
|
||||
| Уфф |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 6.12.2009 Репутация: нет Всего: нет |
Спасибо всем откликнувшимся!
Я сделал достаточно глубокий поиск, и результат не сильно обрадовал(хотя естевственно могу ошибаться так как каждый исчет по своему). Если смотреть со стороны Джава, то описание более-менее подробной схемы по построению веб приложения с модульной структурой вообще нет. На PHP кстати такие присутсвуют и в достаточном количестве. 2MaxPayneC ваше предложение, я рассматривал и что то подобное искал, но склоняюсь в сторону Spring или Wicket так как читал достаочно много минусов в сторону JSF – например то что она достаточно «тяжелая и медленная», хотя это понятие относительное. По Стратсу, так это например то что его разработчики все больше смотрят в торону JSF а Struts 2 который как я понимаю являеться более сильным фреймворком, есть очень тяжелым и по этому фреймворку очень мало документации.. 2garbuz Если пользоваться готовым фрэймворком, типа стратса или спринга, то все равно постоянно придется пилить все приложение - тут кусочек, там кусочек, тут код переписать, там конфиг подправить. Со временем приложение разрастается, и в голове уже трудно удержать все моменты. Вот именно по этому поводу я и прошу совета хотя бы пролить приблизительный свет на создание полноценной модульной архитектуры. На многих форумах как например javatalks.ru есть целые разделы под архитектуру но там никого то ли она не интересует толи она всем известна, так как опять же темы не поднимаються.. OSGi это ИМХО не то в плане что хотелось бы видеть четкую структуру по типу построения модулей для вебсайта, хотя если там все модульно, то рассмотреть следует обязательно 2Kangaroo Тему-сериал я прочитал, ведь перед тем как писать форум нужно тщательно проштудировать, правда не до самого конца и я там не увидел модульности.. там просто рассматриваеться построение веб приложения, что называеться только для того чтобы познакомить с J2EE, если не прав – поправте.. 2afon – это задача которую я хочу реализовать, для этого и задаю вопрос здесь чтобы услышать любые мнения по этому поводу и привлечь дискуссию в это «направление» Еще раз спасибо за ваше участие в дискуссии. Если же есть еще желание обсуждать и развить такую как мне кажеться важную тему, пожалуйста пишите, буду очень благодарен... |
|||
|
||||
| COVD |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1655 Регистрация: 26.7.2005 Репутация: 4 Всего: 43 |
Уфф!
Поскольку практические рекомендации вроде иссякли, то я пофантазирую на эту интересную тему. Зачем нужна модульность? Это возможность модифицировать/удалять/добавлять части приложения с минимальным риском сломать все приложение. Для серверной части веб-приложения актуально также иметь возможность модификаций "на лету", потому что сервера имеют обыкновение работать в режиме 24/7 и обслуживают одновременно много клиентов. Когда веб-приложения были преимущественно статическими, т.е. отдавали клиенту статические ресурсы (файлы html, js, ...), вопрос модульности вроде не возникал. Можно в любой момент поменять html файл на сервере, и клиент в следующем запросе получит новую версию. Причем, заметьте, эти файлы могли лежать физически на разных серверах. Друг с другом они никак не общались. Проблема модификации тут только в редактировании ссылок. Такие приложения уже вполне "модульны" - и модифицируются "на лету" и взаимовлияние компонентов минимально. Стали делать приложения с динамическими ресурсами. Серверное приложение стало не набором статических файлов, разбросанных по серверам, а программой, работающей на сервере в партнерстве с веб-сервером. Очень показательна, кстати, фраза из цитируемого здесь "сериала":
А единое приложение работает быстро и решает сложные задачи, но уже не имеет преимуществ примитивного веба, где любое взаимодействие основано на http запрос-ответ. Изменить что-то в работающей программе равносильно пересадке органа у живого организма, когда приходится все сосудики соединять и одновременно следить, чтобы организм не помер. И этим занимается OSGi. Показывает, как должен быть устроен организм, чтобы это было возможно. На мой взгляд, модульность лучше реализовывать естественным путем, т.е на уровне ссылок, на концепции сервисов, распределенного приложения. Приложение может состоять из набора мелких, не сильно зависимых отдельных приложений, которые функционируют как сервисы, т.е. каждое приложение выполняет одну задачу. Модификация такого компонента примерно так же легка как замена html файла. Более того, концепция Cloud computing тоже подталкивает к проектированию системы в виде набора независимых компонент-приложений. GoogleAppEngine - яркий тому пример. |
|||
|
||||
| MaxPayneC |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 324 Регистрация: 18.2.2006 Репутация: 3 Всего: 9 |
Я имел в виду Struts 2, и на мой взгляд, документации по нему достаточно, да и гугл никто не отменял
|
|||
|
||||
| afon |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 85 Регистрация: 5.4.2008 Где: Украина, Киев Репутация: нет Всего: 1 |
В общем подумал и пришел к решению
Я бы (именно я бы) взял Spring, hibernate, jsp+jstl и сделал некую рабочую модель своего j2ee сайта. Потом бы написал что-то вроде плагинов, которые бы описывали стандартный подход в добавлении модуля: например, описывали бы спецификации - добавления страниц - добавления url-ов - доступа к бд - доступа к набору предустановленных объектов Есть в этом всем одно но. Описанный концепт сильно напоминает велосипед под названием CMS. Может стоит взять готовый и свободный, аля http://java-source.net/open-source/content-managment-systems из этого списка, разобраться, и строить свой модульный сайт на них? Отпадает целый кусок работы разработывать свою архитектуру, свою спецификацию и реализацию плагинов... |
|||
|
||||
| Уфф |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 6.12.2009 Репутация: нет Всего: нет |
2COVD
Спасибо за такой большой ответ. Увы, но OSGi пока не встречал, нужно будет посмотреть, хотя поверхносная информация показывает что это немного не то что мне бы хотелось.. более детально я могу бы ответить когда посмотрю детальней. насчет того как можно было бы организовать модульность, то то что вы говорите конечно же подходит(я об концепции сервисов), но немогли бы вы просветить более детально? тоесть что и как по вашему должно взаимодействовать.. Что я имею ввиду, я бы хотел увидеть более конкретную модель архитектуры веб приложения. Тоесть например самый базовый набор: Есть индекс файл, класс конфига и папка modules. Каждый модуль имеет название такое же как и название папки в modules Каждая папка сожержит свой файл с которого начинаеться анализ параметров каждого модуля. Файл индекса, обрабатывает логику в которой указано как парсить папки в modules и работать с модулями. 2MaxPayneC Разрешите пропустить реплики по вашему вопросу, потому как это все рискует перерости в холивар по типу cons and pros фреймворков, а мне хочеться обсудить вариант формирования архитектуры веб приложения 2afon да, спасибо за предложение, где то так и планирую поступить, тоесть начать с минимального какого то набора функций. Сначала все достаточно примитивно, но потом все более и более разрабатывая.. Но как бы вы поступили в данной ситуации, наведите более конкретную структуру веб приложения.. тоесть что и как.. Насчет велосипеда не согласен, хочеться создать свою систему которую потом разрабатывать в том направлении которое бы оптимально подходило.. а парсить чей то код, это ИМХО тяжелее чем писать самому.. хотя конечно же буду рассматривать структуры этих CMS Это сообщение отредактировал(а) Уфф - 2.2.2010, 16:53 |
|||
|
||||
| Vasay |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2097 Регистрация: 8.3.2006 Репутация: 18 Всего: 73 |
Уфф,
Вы мыслите штампами PHP. Java - это другая вселенная с другими законами. PHP язык скриптов. Скрипт рождается при http запросе к серверу и умирает после завершения его обработки. Новый запрос - новое рождение и новая смерть. Java приложение загружается один раз. Возможно создать объект, который существовал бы в течении всего времени жизни приложения в единственном экземпляре ( singleton bean), или же объект который бы жил в единственном экземпляре в рамках одной сессии ( session bean ) Вследствии вышесказанного, вопрос модульности так просто, как в PHP решить нельзя. В PHP кинул папку с плагином в нужное место - все равно при следующем запросе все создается заново и код плагина будет задействован. Стал не нужен плагин - удалил папку, при следующем запросе он уже не будет работать. С одной стороны - все просто, с другой - ужасно. Приходится при каждом запросе заново создавать все объекты, инициализировать их... затем нужно куда-то сохранить данные, которые могут потребоваться при следующем запросе.... все это безумно жрет ресурсы. А потом люди удивляются, почему wordpress с плагинами при весьма небольшой посещаемости кладет на лопатки весьма мощные сервера. В Java приложение с плагинами сложнее, нужно, например, организовать грамотную загрузку и выгрузку плагина. Однако, создание модульных приложений на Java вполне возможна - порталы тому вполне удачный пример. Это сообщение отредактировал(а) Vasay - 3.2.2010, 03:32 -------------------- Придумать идеальную защиту от дурака невозможно, дураки, наудивление, изобретательны. |
|||
|
||||
| Ares4322 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 339 Регистрация: 25.9.2007 Где: Россия, Москва Репутация: 2 Всего: 3 |
Я сейчас как раз задался вопросом разработки сайта-обертки для веб-приложения. Функционалность стандарная: новости, форум, регистрация, личный кабинет, ну и непосредственно веб приложение(вернее ссылка не него). Писать с нуля честно говоря не очень хочется, так как глубоко веб-фреймворки я пока не знаю (конечно, разбираться в них буду, но просто пока нет на это времени).Так вот я решил посмотреть что есть на рынке Java CMS. Залез сюда - http://java-source.net/open-source/content-managment-systems.
Выбирал по критериям: -поддержка БД(причем для меня PostgreSQL) -именно CMS, а не DMS и тд -проект жив))) В итоге вот список: -contelligent ( http://www.contelligent.com/contell/cms/c1...site/index.html ) -alfresco ( http://www.alfresco.com/ ) -nuxeo ( http://www.nuxeo.org ) -jadasite ( http://www.jadasite.com/ ) -Jahia ( http://www.jahia.com/jahia/Jahia ) -japsportal ( http://www.japsportal.org/jAPSPortal/ ) -dotcms ( http://www.dotcms.org/) Поставил dotCMS. Разбираюсь... Добавлено через 6 минут и 36 секунд Единственное, что не знаю точно, так это то, можно ли использовать эти CMS с закрытым приложением, так как большинство из них под GPL. Если LGPL(ну и конечно BDS Apache...), то точно можно, а под GPL не уверен Добавлено через 12 минут и 35 секунд Соответственно, если откинуть GPL, то получится: -contelligent ( http://www.contelligent.com/contell/cms/c1...site/index.html ) -alfresco ( http://www.alfresco.com/ ) -nuxeo ( http://www.nuxeo.org ) |
|||
|
||||
| Vasay |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2097 Регистрация: 8.3.2006 Репутация: 18 Всего: 73 |
Ares4322,
Я задавался вопросом выбора Java CMS некоторое время назад. Мое мнение о том что попробовал: Наиболее достойные внимания продукты: OpenCMS (старый, хорошо документированный продукт. Но не все меня устроило) Magnolia (если бы free версия была бы не так порезана) Наиболее перспективный: DotCMS (но пока довольно неудобный в использовании, в новой версии обещают новый админ интерфейс) Не понравилось: Jahia (нормальный web сайт на ней не сделать) JetSpeed 2 (не пригоден для создания web сайтов) Отдельно стоит выделить LifeRay - портал, вполне пригодный для создания web сайтов, но доработок требует и не малых. Это сообщение отредактировал(а) Vasay - 3.2.2010, 17:15 -------------------- Придумать идеальную защиту от дурака невозможно, дураки, наудивление, изобретательны. |
|||
|
||||
| Ares4322 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 339 Регистрация: 25.9.2007 Где: Россия, Москва Репутация: 2 Всего: 3 |
Но я понял, что ни в OpenCMS , ни в Magnolia нет поддержки БД. Там хранилище - JCR. А dotCMS под GPL, то есть со своим приложением закрытым его не свяжешь
|
|||
|
||||
| Vasay |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2097 Регистрация: 8.3.2006 Репутация: 18 Всего: 73 |
Ares4322,
В Magnolia и OpenCMS можно использовать БД, С лицензиями я не особо разбираюсь, но по-моему все зависит от реализации связки - если вы как часть кода своего приложения используете код приложение под GPL - то ваше приложение должно быть открыто. Если связка используется на уровне библиотеки - то уже нет. Т.е. если Ваше приложение использует драйвер подключения к БД, который под GPL - это не значит что ваше приложение должно быть открыто. -------------------- Придумать идеальную защиту от дурака невозможно, дураки, наудивление, изобретательны. |
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |