Можно ли использовать веб-фреймворк, но не зависеть от него? - PullRequest
1 голос
/ 25 апреля 2009

Я изучаю использование веб-фреймворков с моим веб-приложением на Java. Моими основными требованиями являются простота обслуживания, тестируемость и отсутствие повторений.

Я исследовал написание своего собственного приложения типа MVC, используя какой-то шаблон фронт-контроллера и JSP для представлений. Преимущество этого заключается в том, что у меня есть полный контроль над всеми аспектами моего веб-приложения, и если я правильно его спроектирую, не составит труда перенести его в более проверенную среду в будущем, если я этого захочу. Однако дело в том, что мне нужно, так сказать, изобретать велосипед.

Я слышал хорошие новости о доступных в настоящее время веб-фреймворках. Некоторые технологии, на которые я смотрю, это Spring, Wicket, Struts, Guice, Hibernate и Tapestry.

Я немного опасаюсь гобеленов и калиток. Я не знаю слишком много о них, но они, кажется, отклоняются от формулы сервлета-> модели jsp-> вида. Я не уверен, что мне это удобно. Хотя я слышал, что на самом деле Wicket лучше всего подходит для Guice и очень тестируем.

Похоже, что Spring может подойти, но я очень осторожен с фреймворками, которые пытаются все. Я хотел бы использовать Spring-MVC, но я могу поменять местами другие компоненты? Могу ли я, например, использовать Guice в качестве движка DI при использовании Spring-MVC в качестве фреймворка?

Я кратко рассмотрел Struts, но он кажется слишком сложным для моих нужд и, опять же, кажется полным пакетом.

Я никогда не использовал Hibernate, но он, кажется, является стандартом для ORM, и если это что-то вроде ActiveRecord (с которым я столкнулся лишь немного), я уверен, что он соответствует моим потребностям.

Я также никогда не использовал Guice, но людям это действительно нравится, и я вообще фанат DI, хотя я не уверен, как он используется в реальных приложениях.

По сути, я действительно уверен в написании Servlets / JSP. Я не против изучения альтернативных технологий, но я ищу совет относительно того, какие из них действительно дадут мне пользу.

Если я могу создать приложение MVC с использованием сервлетов и JSP, стоит ли включать Spring? Или мне просто использовать Servlets / JSP и использовать DI-движок, такой как Guice?

Я почти уверен, что хотел бы использовать Hibernate для ORM, но я слышал, что это может быть довольно сложно. Все, что я действительно ищу, - это способ сопоставить мои POJO с базой данных, поэтому, если есть что-то лучшее / более простое в использовании, я готов это найти.

Я чувствую себя потерянным и ищу направление от людей, хорошо осведомленных в этой области, и любые мнения по любому из этих вопросов были бы очень благодарны. Спасибо!

Ответы [ 3 ]

3 голосов
/ 25 апреля 2009

"Похоже, что Spring может подойти, но я очень настороженно отношусь к фреймворкам, которые пытаются сделать все. Я хотел бы использовать spring-MVC, но можно ли поменять местами другие компоненты? Могу я, например, использовать Guice как мой DI-движок при использовании Spring-MVC в качестве моей платформы? "

Согласованный Spring предоставляет множество вещей, но он полностью модульный. Вы можете использовать DI с или без AOP и так далее. И да, вы можете использовать Spring MVC и Guice for DI вместе.

«Я кратко рассмотрел Struts, но он кажется слишком сложным для моих нужд и снова кажется полным пакетом».

Я уже некоторое время пользуюсь Struts, но даже когда я начал его использовать, мне было очень легко. Поначалу контроллер может показаться ошеломляющим, но вы получите настоящее удовольствие, когда освоите его. Лучше всего взглянуть на некоторые примеры из реальной жизни, используя Struts.

«Я никогда не использовал Hibernate, но, похоже, он является стандартом для ORM, и если это что-то вроде ActiveRecord (с которым я столкнулся лишь немного), я уверен, что он соответствует моим потребностям».

О, тогда, если вы находите Struts жестким, Hibernate огромен. Это требует большой кривой обучения. В конце оно окупается, но если вы знаете ActiveRecord, я предлагаю вам придерживаться его, прежде чем вы получите достаточные знания о Hibernate.

«Я почти уверен, что хотел бы использовать Hibernate для ORM, но я слышал, что это может быть довольно сложно».

ИМХО, очень верно ... по крайней мере для начинающих. (Кто-нибудь предлагает изменение здесь?)

"Если я могу создать приложение MVC с использованием сервлетов и JSP, стоит ли включать Spring?"

Вы имеете в виду без Struts или каких-либо других фреймворков? Как?

Похоже, вы пытаетесь взять на себя слишком много слишком быстро. Попробуйте рассмотреть одну вещь за один раз. DI сам по себе является сложной задачей для реализации в реальном мире. О да, концептуально это здорово, но я имею в виду, что вам нужно сначала освоиться один за другим.

2 голосов
/ 26 апреля 2009

Вопрос иллюстрирует некоторую путаницу. Я думаю, что окончательный ответ: «Нет, невозможно использовать веб-фреймворк, но не зависеть от него».

Но твой инстинкт хорош. Вы хотите максимизировать общую выгоду, которую обеспечивает фреймворк, помогая правильно распределять и модульно кодировать и минимизировать его инвазивность

С учетом сказанного, я думаю, что Spring является победителем по обоим пунктам.

Если вы будете следовать идиоме Spring, структура вашего кода будет лучше за счет использования интерфейсов, уровней и аспектов. Некоторое внимание, которое они уделяют дизайну, обречено на вас. Это так же полезно, как и хороший код сантехники, который они предоставляют.

Ваша кодовая база не должна быть на 100% пружиной. Я видел Spring, использованный в усовершенствованиях унаследованных Java-приложений, которые не были переписаны спереди назад.

Struts, как правило, не является хорошим выбором, потому что это просто веб-фреймворк. Он поощряет вас помещать всю свою обработку в подклассы Action, чтобы никогда не выходить. Spring внедряет идею сервисного интерфейса, который отделяет веб-уровень от серверной части. Проще поменять местами веб-уровни и представить службу как SOAP, RMI, EJB или удаленный HTTP-вызов.

Hibernate намного сложнее, чем Struts. Если вы выбрали Spring, используйте интерфейсы персистентности и начните с Spring JDBC. Когда вы будете готовы к Hibernate, вы всегда можете написать новую реализацию и просто внедрить ее туда, где раньше была ваша версия JDBC.

2 голосов
/ 25 апреля 2009

Очень просто, если вы знакомы с JSP и сервлетами, то если вы хотите избавиться от рутинной работы в веб-программировании, я бы посмотрел на Stripes или Struts 2.

Я очень знаком с Stripes и знаю, что Struts 2 похож, поэтому я сосредоточусь на этой статье на Stripes.

Кроме того, Struts 1 ничего не стоит. Это не предлагает никакой ценности (честно говоря).

У Stripes есть несколько функций, но я остановлюсь только на нескольких.

Основная ценность Stripes, и если бы это была только его особенность, она все равно была бы очень ценной, это ее обязательная структура.

Привязка - это процесс преобразования строковых значений запросов в значения действий. Полосы делают это на удивление хорошо. В частности, привязка Stripes отлично работает с вложенными и индексированными параметрами, а также с преобразованиями типов. Вы можете легко иметь поле формы с именем «currentDate», а затем иметь «Date currentDate» в вашем действии, и Stripes будет «делать правильные вещи».

Если у вас есть поле формы с именем "mainMap ['bob']. ListOfThings [3] .customer.birthDate", Stripes создаст карту, создаст список, создаст клиента, преобразует строку в дату, заполнит the BirthDate, поместите клиента в 3 слота списка и поместите этот список в точку 'bob' на карте. (Я делаю такие вещи все время.)

Привязка запросов к переменным Action просто замечательна.

Вдобавок к этому вы получаете, если вы используете их теги формы, вы получаете хорошее поведение, когда, например, они ставят «Фред» в поле даты. Вы легко получаете форму обратно, с Фредом в поле и хорошим сообщением об ошибке.

Наконец, мне очень нравятся их резолюции в результате их действий. Например, ForwardResolution для пересылки на страницу, RedirectResolution для перенаправления на страницу, StreamingResolution для перекачки данных через сокет и т. Д. Это очень элегантная функция.

Полосы обладают всевозможной мощью и выполняют всевозможные действия, но эти 3 части - то, что делает его лучшим для меня, и то, что я использую в 99% случаев.

Проще говоря, он не мешает работе и легко справляется с «подключением», не полностью скрывая природу системы HTTP-запросов.

Для тех, кто доволен JSP / сервлетами, Stripes, я думаю, является отличным шагом, поскольку он добавляет хорошую, солидную ценность с очень небольшими затратами (его легко настроить) и без необходимости отбрасывать все, что вы уже знаете, поскольку он прекрасно работает с JSP и JSTL. Узнайте о простом механизме, который он использует для сопоставления действий с URL-адресами, и о том, как просто сопоставить запросы с вашими действиями, и вы полетите в одно мгновение.

Прекрасно работает с Ajax и тому подобным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...