【问题标题】:Comaprison of Liferay ServiceBuilder to other Code generation tools like AndroMDALiferay Service Builder 与其他代码生成工具(如 AndroMDA)的比较
【发布时间】:2011-07-04 12:18:00
【问题描述】:

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

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

现在我正在决定应该使用哪种工具。根据您使用这些工具的经验,请让我知道使用该库的优点/缺点,

我很想知道这些方面,以及你自己的想法

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

【问题讨论】:

    标签: comparison code-generation liferay-6 andromda


    【解决方案1】:

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

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

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

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

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

    【讨论】:

    • 嗨,Ganesh,你是对的。我建议每个人只将 SB 用于简单的 portlet,而不是复杂的。绝对不适用于需要基础设施测试的 portlet。还有一点你的 5. 负责权限的 ajax 和 web 服务的远程接口......你也需要自己处理。
    • 但如果我想一想,远程/本地服务范式对 Portal 本身来说确实有意义,以保持可维护性。但是对于单独的 portlet,没有必要老实说远程服务接口
    【解决方案2】:

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

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

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

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

    【讨论】:

    • 感谢您的回复,这有帮助。
    猜你喜欢
    • 2011-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-22
    • 1970-01-01
    • 2020-01-23
    相关资源
    最近更新 更多