1

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

我还尝试研究可以从 UML 模型生成类似服务的 AndroMDA,这听起来更有趣,因为它将直接链接我的业务模型,而无需我需要为 service.xml 学习新的 xml 配置(在 liferay ServiceBuilder 的情况下)

现在我正在决定我应该使用哪个工具。根据您对这些工具中的任何一个的经验,请让我知道使用任何这个库的优点/缺点是什么,

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

  1. 从长远来看,这更好地保持我的发展更有成效。
  2. 如果我使用 ServiceBuilder,我将能够使用门户环境之外的服务(假设从非门户应用服务器运行相同的服务。
  3. UML 驱动的方法总是好的还是它有一些实际的缺点/挑战。
  4. 你知道在 Liferay 6.x 开发中比这两个更好的任何其他代码生成库吗?我还检查了这些 SO Threads

4

2 回答 2

4

以下是我在使用 Servicebuilder 时遇到的一些问题(我使用的是 liferay 5.2.3):

  1. 无法使用 ORM 框架。没有办法在对象之间产生关系。因此,我有效地工作只是对象映射器。它不会产生单一的关系
  2. 不能使用基本的面向对象的东西,例如与域或服务的继承
  3. 编写单元测试用例非常困难
  4. 我还是不明白复杂的域结构需要什么
  5. 我觉得它生成的代码可以使用 IDE 快速编写

但正如 Egar 所说,它肯定有它自己的好处,它是专门为 Liferay 制造的。所以它可以快速生成liferay所需的一切。我听说在最新版本的 liferay 中,上述问题很少得到修复。

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

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

于 2011-07-14T12:48:59.227 回答
2

您应该注意一个重要的事实。ServiceBuilder 已被用于帮助构建门户本身,并且紧密集成到其中。你不能在 Liferay 之外使用它……我的意思是它可能可以被拿来修改以用于一般用途,但我怀疑它是否有意义。

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

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

AndroMDA 是一个通用的 MDA 框架。我不太了解,所以我宁愿不做比较。ServiceBuilder 的强大之处在于它不是一个通用的框架——它对于 Liferay 插件开发的功能越强大。

于 2011-02-25T19:13:54.557 回答