Сопоставление Liferay ServiceBuilder с другими инструментами генерации кода, такими как AndroMDA - PullRequest
1 голос
/ 25 февраля 2011

Я начал копаться в каркасе Liferay 6.x ServiceBuilder и мне очень понравился его подход к генерации кода. Простой файл service.xml может генерировать готовые к использованию мощные сервисы даже без написания одной строки кода.

Я также попытался изучить AndroMDA, которая может генерировать аналогичные сервисы из модели UML, что звучит еще более интересно, так как это напрямую свяжет мою бизнес-модель, и мне не потребуется изучать новый XML-конфиг для service.xml (в случае liferay). ServiceBuilder)

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

Мне интересно знать эти аспекты, а также ваши собственные мысли

  1. Что лучше для долгосрочной продуктивности моего развития.
  2. Если я использую ServiceBuilder, я смогу использовать службы вне env портала (скажем, запуск той же службы с сервера приложений, не являющегося порталом.
  3. Всегда ли UML-ориентированный подход хорош или есть некоторые практические минусы / проблемы?
  4. Вам известна какая-либо другая библиотека для генерации кода, которая лучше, чем эти две, для разработки liferay 6.x? Я также проверил эти SO темы

Ответы [ 2 ]

4 голосов
/ 14 июля 2011

После нескольких проблем, с которыми я столкнулся при работе с Servicebuilder (я использую liferay 5.2.3):

  1. Невозможно использовать среду ORM. Там нет способа генерировать отношения между объектами. Из-за этого я эффективно работаю просто объект картографирования. Это не порождает один вид отношений
  2. Нельзя использовать базовые объектно-ориентированные вещи, такие как наследование с доменом или услугами
  3. Довольно сложно написать тестовые примеры
  4. Я так и не понял, зачем нужна сложная доменная структура
  5. Мне кажется, что код, который он генерирует, можно быстро написать с помощью IDE

Но, безусловно, у него есть свои преимущества, как сказал Эгар, он специально создан для Liferay. Так что он может быстро сгенерировать все, что нужно для liferay. Я слышал, что в последних версиях liferay исправлены некоторые из вышеперечисленных проблем.

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

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

2 голосов
/ 25 февраля 2011

Есть важный факт, о котором вы должны знать. ServiceBuilder используется для помощи в создании самого портала, и он тесно интегрирован в него. Вы не можете использовать его вне Liferay ... Я имею в виду, что, вероятно, его можно было бы взять и изменить для общего использования, но я сомневаюсь, что это имело бы смысл.

Самое главное, потому что Portal и каждый разрабатываемый плагин имеют свой собственный контекст веб-приложения в контейнере сервлета - у каждого есть свой загрузчик классов. Плагины используют Portal Classloader и службы портала и т. Д. И т. Д.

Проще говоря, код, сгенерированный ServiceBuilder, и контекст Spring могут существовать, только если есть веб-приложение / ROOT /, которое представляет собой Liferay Portal с загрузчиком классов портала и т. Д.

AndroMDA - это платформа MDA для общего пользования. Я не очень много знаю, так что я не собираюсь сравнивать. Сила ServiceBuilder заключается в том, что он не является платформой для общего использования - тем более он мощен для разработки плагинов liferay.

...