将Liferay ServiceBuilder与其他代码生成工具(如AndroMEDA)进行比较

时间:2011-02-25 18:23:39

标签: comparison code-generation liferay-6 andromda

我开始深入研究liferay 6.x ServiceBuilder框架,并且非常喜欢它的代码生成方法。一个简单的service.xml文件可以生成随时可用的强大服务,甚至无需编写任何代码。

我也试过调查可以从UML模型生成类似服务的AndroMDA,这听起来更有趣,因为它将直接链接我的业务模型,而不需要为service.xml学习新的xml配置(如果是liferay ServiceBuilder)

现在我正在决定应该使用哪个工具。根据您对这些工具的使用经验,请告诉我使用此库的优点/缺点

我有兴趣了解这些方面以及您自己的想法

  1. 长期保持我的开发效率更好。
  2. 如果我使用ServiceBuilder,我将能够使用门户网站env之外的服务(假设从非门户网站应用服务器运行相同的服务。
  3. UML驱动的方法总是很好还是有一些实际的缺点/挑战。
  4. 你知道还有其他任何代码生成库比liferay 6.x开发更好吗?我还检查了这些SO线程

2 个答案:

答案 0 :(得分:4)

我遇到过Servicebuilder遇到的一些问题(我使用的是liferay 5.2.3):

  1. 无法使用ORM框架。没有办法生成 对象之间的关系。因此,我有效地工作 只是对象映射器。它不会产生一种关系。
  2. 不能使用基于面向对象的东西,比如继承域名或服务
  3. 编写单元测试用例非常困难
  4. 我仍然不明白复杂域结构的需求是什么
  5. 我觉得它生成的代码可以使用IDE快速编写
  6. 但绝对有它自己的好处,比如Egar说,它是专为Liferay制作的。因此它可以快速生成liferay所需的一切。我听说在liferay的最新版本中,很少有上述问题得到解决。

    总的来说,这取决于您的要求。如果您需要对ORM层进行更多控制,并且您需要进行大量单元测试的复杂业务逻辑,请选择普通的Spring服务,这些服务可以作为Web服务或REST服务公开给您的portlet。

    否则服务构建器也适用于简单的portlet。其他方法可以使用两者。所有复杂服务都作为一个单独的项目,而简单的服务与服务构建者一起。

答案 1 :(得分:2)

有一个重要的事实是你应该知道。 ServiceBuilder已被用于帮助构建门户本身,并且它与其紧密集成。你不能在Liferay之外使用它...我的意思是它可能会被采用和修改以供一般使用,但我怀疑它是否有意义。

最重要的是因为您正在开发的Portal和每个插件在servlet容器中都有自己的Web应用程序上下文 - 每个都有自己的类加载器。插件使用Portal类加载器和门户服务等。

简单地说,ServiceBuilder生成的代码和spring上下文只有在存在webapp / ROOT / Liferay Portal和门户类加载器等的情况下才能存在。

AndroMDA是一个用于一般用途的MDA框架。我不太了解,所以我宁愿不做比较。 ServiceBuilder的强大之处在于它不是一般用法的框架 - 它对于liferay插件开发来说功能越强大。