Сопоставление Liferay ServiceBuilder с другими инструментами генерации кода, такими как AndroMDA
Я начал копаться в фреймворке liferay 6.x ServiceBuilder и мне очень понравился его подход к генерации кода. Простой файл service.xml может генерировать готовые к использованию мощные сервисы даже без написания одной строки кода.
Я также попытался изучить AndroMDA, которая может генерировать аналогичные сервисы из модели UML, что звучит еще более интересно, поскольку она будет напрямую связывать мою бизнес-модель, и мне не нужно будет изучать новую конфигурацию xml для service.xml (в случае liferay ServiceBuilder)
Сейчас я нахожусь в процессе принятия решения, какой инструмент использовать. Исходя из вашего опыта работы с любым из этих инструментов, пожалуйста, дайте мне знать, каковы плюсы / минусы использования любой из этих библиотек,
Мне интересно знать эти аспекты, а также ваши собственные мысли
- Что лучше для поддержания моей продуктивности в долгосрочной перспективе.
- Если я использую ServiceBuilder, я смогу использовать службы вне env портала (скажем, запуск той же службы с сервера приложений, не являющегося порталом).
- Всегда ли UML-ориентированный подход хорош или есть некоторые практические минусы / проблемы?
Знаете ли вы о какой-либо другой библиотеке генерации кода, которая лучше этих двух для разработки liferay 6.x? Я также проверил эти темы
2 ответа
Следующие несколько проблем, с которыми я столкнулся при работе с Servicebuilder (я использую liferay 5.2.3):
- Не в состоянии использовать ORM Framework. Нет способа создать отношения между объектами. Из-за этого я эффективно работаю только объектным картографом. Это не порождает один вид отношений
- Не может использовать базовые объектно-ориентированные вещи, такие как наследование с доменом или сервисами
- Довольно сложно писать тестовые примеры
- Я так и не понял, зачем нужна сложная доменная структура
- Я чувствую, что код, который он генерирует, может быть быстро написан с использованием IDE
Но, безусловно, у него есть свои преимущества, как сказал Эгар, он специально создан для Liferay. Так что он может быстро сгенерировать все, что нужно для liferay. Я слышал, что в последних версиях liferay исправлены некоторые из вышеперечисленных проблем.
В целом, это зависит от ваших требований. Если вам нужен больший контроль над уровнем ORM и у вас сложная бизнес-логика, требующая большого количества модульного тестирования, выберите обычные весенние сервисы, которые могут быть представлены в виде веб-сервисов или сервисов REST для ваших портлетов.
В противном случае построитель сервисов также подходит для простых портлетов. Другой подход мог бы использовать оба. Все комплексные услуги как отдельный проект, так и простые с сервисом застройщика.
Есть важный факт, о котором вы должны знать. ServiceBuilder был использован для построения самого портала, и он тесно интегрирован в него. Вы не можете использовать его вне Liferay... Я имею в виду, что, вероятно, его можно было бы взять и изменить для общего использования, но я сомневаюсь, что это имело бы смысл.
Самое главное, потому что Portal и каждый разрабатываемый плагин имеют свой собственный контекст веб-приложения в контейнере сервлета - у каждого есть свой загрузчик классов. Плагины используют Portal Classloader и службы портала и т. Д. И т. Д.
Проще говоря, сгенерированный код ServiceBuilder и контекст Spring могут существовать, только если есть веб-приложение /ROOT/, которое представляет собой Liferay Portal с загрузчиком классов портала и т. Д.
AndroMDA - это платформа MDA для общего пользования. Я не очень много знаю, так что я не собираюсь сравнивать. Сила ServiceBuilder заключается в том, что он не является платформой для общего использования - тем мощнее он для разработки плагинов Liferay.