Рекомендации ... JavaServer Faces (JSF), Struts, model2, другие - PullRequest
2 голосов
/ 27 августа 2009

Мы планируем переработать веб-сервис управления бизнесом Java, который используется уже более 4 лет. Внутренняя архитектура программного обеспечения была построена по индивидуальному заказу с плохим разделением уровня представления и бизнес-логики. Кроме того, общий уровень модели доказал, что он не может эффективно идти в ногу с изменяющейся бизнес-логикой и требует рефакторинга. Когда я планирую эту задачу, я смотрю на доступные платформы, которые я мог бы использовать, чтобы сделать приложение более дружелюбным к новым разработчикам и изменяющим бизнес-логику. Я никогда раньше не использовал стойки или JSF, но прочитал их в несколько кратком и кратком обзоре, и на первый взгляд я не слишком впечатлен этим, однако я нахожу JSF более интригующим.

Сначала Обе фреймворки, кажется, фокусируются на частях контроллера и просмотра шаблона MVC. Оставляю вам делать что угодно на уровне модели / бизнеса. (я прав?)

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

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

Ответы [ 3 ]

2 голосов
/ 27 августа 2009

Есть несколько вещей, о которых вы должны подумать при использовании этого подхода:

  1. Ваши специфические потребности против фокуса конкретного каркаса
  2. Наличие кодеров, которые знают рамки (внутренние и на рынок)
  3. Кривая обучения для Framework, а также уровень его принятия и поддержки в более широком сообществе разработчиков.

Многие люди высоко оценивают Spring MVC, хотя, если IOC для вас новичок (или вы не покупаете концепцию), это может быть немного больше, чем вы хотите откусить «все сразу».

Еще одна надежная опция - это Struts (хотя я настоятельно рекомендую Struts 2 для новой разработки).

С одной стороны, следует с осторожностью относиться к размеру и объему операции «трансплантации каркаса». Если ваше приложение остро нуждается в серьезной структурной реорганизации, вполне вероятно, что в конечном итоге вы могли бы начать с нуля и повесить куски существующей бизнес-логики на скелет, построенный на платформе. Время / деньги / ресурсы (и альтернативные издержки!) Не следует недооценивать, и вы должны быть уверены, что руководство действительно выкупает, чтобы вам не напали на вас на полпути. Здесь действительно очень важно «измерить трижды и сократить один раз» и убедиться, что вы откусываете кусок работы, которую вы можете прожевать - переходя от «устаревшего приложения» к «совершенно новому современному приложению с использованием всех новых технологий» "откровенно лучше всего делать поэтапно, а не все сразу.

Было бы полезно понять размер и относительную сложность приложения, а также его базовую природу (это приложение с очень интенсивным веб-интерфейсом или система бэк-офиса, которая выполняет много задач?), Чтобы сделать лучшие предложения по конкретным фреймворкам: хотя вы, безусловно, могли бы построить большинство веб-приложений на любой конкретной фреймворке, некоторые из них наклонены в большей степени в одном направлении, чем в другом (например, Struts и Wicket имеют довольно разную направленность)

Кроме того, нет ничего плохого в том, чтобы попробовать пару платформ-кандидатов вместе с существующим приложением. Хотя я ничего не знаю о технологической объединительной панели вашего текущего приложения, если вы не сделали что-то действительно странное, вполне возможно установить одну или несколько платформ и поэкспериментировать с ними вместе с вашим существующим приложением (например, написать новые функции против них или переписать части используя существующий код, затем подключите этот код к бэкэнду). Это позволит вам поэкспериментировать и «попробовать, прежде чем купить». Я бы посоветовал вашей команде обратить внимание на одного или нескольких кандидатов из «короткого списка», чтобы понять, как это будет работать на практике. Это, кстати, не самый страшный способ приблизиться к рефакторингу: постепенно заменяйте старые функциональные возможности своей новой платформой.

Последний (я думаю) совет: долго и пристально смотреть на свою модель данных и интерфейсы к ней. Как правило, именно в этом и заключаются настоящие гремлины, и независимо от структуры, которую вы хотите получить правильно. Я бы настоятельно рекомендовал сделать это вашей целью рефакторинга # 1, а не принятием конкретной структуры. Сильная модель данных сделает внедрение ЛЮБОЙ структуры (и обработку обновлений) намного проще ... и если ваше руководство изменит на вас указания и в конечном итоге отменит обновление структуры по какой-либо причине, то время, потраченное на рефакторинг модели данных, окупится.

EDIT:

Учитывая ваши комментарии о форме продукта, я бы удвоил совет "быть очень, очень осторожным". Место, в котором вы сейчас находитесь, очень распространено (и печально известно) и съело много команд (и карьер) живьем. Вы нуждаетесь в глубоком понимании и поддержке со стороны заинтересованных сторон в цепочке и со стороны бизнеса, поскольку это будет грандиозное мероприятие, которое по своей природе займет больше времени и будет стоить дороже, чем вы себе представляете. Способность технической команды быть ясными и реалистичными в отношении стоимости и масштабов изменений здесь имеет решающее значение для успеха - если вы значительно недооцениваете, вы подвергаете риску бюджет, карьеру и, возможно, сам бизнес. Если вы переоцените, вы, возможно, никогда не начнете:)

Один из подходов, когда у вас есть сильная заинтересованность и поддержка со стороны руководства, заключается в том, чтобы действительно относиться к этому как к целому новому продукту - перевести старые вещи на техническое обслуживание, закатать рукава и приступить к разработке системы замены со всеми знания, которые вы получили в предыдущей реализации. В этом случае я бы разработал sans-framework взаимодействия компонентов и данных, а затем посмотрю, как данный набор подходящих фреймворков будет поддерживать эту реализацию. Начало работы с каркасом может привести вас к неестественным местам и привести к тому, что вы окажетесь в том же месте в будущем.

Некоторые известные популярные фреймворки для проверки:

Struts2 - поддержка MVC / w AJAX

Калитка - AJAX Heavy

Struts1 - дедушка практически всех фреймворков Java; стоит посмотреть

Spring MVC - веб-структура Spring IOC

0 голосов
/ 04 сентября 2009

JSF позволяет вам сосредоточиться на компонентах, в то время как решения на основе JSP не так или много. Вы по-прежнему будете кодировать множество jsp'ized html-материалов, в то время как с решениями JSF вам действительно не нужно. Посмотрите на RichFaces или IceFaces как libs. RichFaces позволяет легко делать вещи типа AJAX. Просто добавьте тег <a4j:support event="onkeyup" reRender="output"/> к вашему стандартному элементу управления JSF. В приведенном выше примере для события keyup для элемента управления он будет перерисовывать область <a4j:region или другой тег JSF Richfaces. Нет ничего проще.

0 голосов
/ 27 августа 2009

Если вам понравился JSF и вы хотите его использовать, я бы рекомендовал использовать JBoss Seam. Вы также можете использовать Spring, но я думаю, что использование JBoss Seam значительно упрощает использование JSF. Я использую его в течение почти 1 года с хорошими результатами. И если вы хотите смоделировать свой процесс как бизнес-процесс, вы можете попробовать JBPM (вместе с Seam).

Если вы хотите узнать больше о гибких методологиях, чтобы вы могли улучшить как свои методологии, так и практики, сначала посмотрите на гибкий маневр http://agilemanifesto.org/. А затем начните пробовать установленные методологии, такие как XP или Scrum.

Но не торопитесь, начните пробовать одно изменение, чем другое, чтобы не запутаться

...