Liferay 模块与 Liferay 插件的区别

Liferay 7.0 较之 Liferay 6.2,有了巨大的变化。最显著的就是引入了基于 OSGi 的模块化的开发机制虽然还是使用基于 Eclipse 的 Liferay IDE 进行开发,但是开发及构建方式大不一样。Liferay 7.0 开发主要使用的 Liferay 模块项目。

之前的版本大多使用 Liferay 插件项目进行开发。

今天我们就来讨论下 Liferay 模块与 Liferay 插件的区别。

Liferay 模块Liferay 插件
从 Liferay 7.0 开始引入。 从 Liferay 开始就引入了,一直到 Liferay 7/DXP。
基于 OSGi 框架。 基于传统的Java Web 应用框架,就像我们使用更多的 J2EE Web 应用框架一样。
运行在 OSGi 运行时环境中。 运行在传统的应用服务器中,如Tomcat、JBoss、Glassfish。
也可以称为 OSGi bundle,打包为 JAR 文件。 是 Web 应用,打包为 WAR 文件。
Liferay模块提供了帮助OSGi的动态组件注入,因此我们可以将大部分功能作为独立组件,并且在需要时可以轻松地注入到其他组件中。 就像独立的 Web 应用,不能在两个 Web 应用之间共享任何东西。它更加耦合。如果我们想共享一些类,我们必须把这些 jar 文件放在一些全局类加载器中,然后其他的 web 应用可以使用这些类。
可以避免所有类加载器问题 会碰到更多类加载器问题
No Class Definition FoundClass Not Found 等运行时错误不会出现在运行时中。 在运行时中会频繁地遇到 *No Class Definition Found*、*Class Not Found* 等运行时错误。
具有不用的类型,如 Portlet 模块、Hook 模块。主题和布局部分支持模块化。 具有不同的类型,如 portlet、theme、ext、layout 和 hook。
基于 OSGi 框架开发的,使用了声明式服务(DS)、Apache Blueprint 和 OSGi API 等好几种框架来部署模块。 使用 J2EE Web 应用框架,如 Struts、Spring、Liferay MVC、JSF 等。
遵循3层架构进行应用开发,分别是持久、服务和表示层。 使用相同的3层架构进行应用开发。
通常将模块开发分成独立的模块,持久层模块、服务层模块、Web层模块。 全部三层打包成一个 WAR 文件。
支持动态部署功能,可以在不取消部署模块的情况下停止和启动模块。 必须从服务器取消部署 WAR 文件才能删除功能。
使用 Apache Gogo shell 命令行界面(CLI)来管理 OSGi 运行时环境中的 Liferay 模块。例如停止、启动、激活和停用。Liferay Portal 管理界面也可以管理这些 Liferay 模块。 没有任何命令行界面取消部署,我们必须从服务器上移除插件 WAR 文件。某些企业级应用服务器有管理功能来做这些事情。Liferay Portal 管理界面也可以管理这些 Liferay 模块。
部署 Liferay 模块之后,就可以在 Liferay Portal 服务器的 OSGi 目录中找到。 所有 Liferay 插件都可以在 Liferay Portal 服务器的 webapps 目录中找到。
具有重要的配置文件 METAINF,就像模块部署配置文件一样,拥有 OSGi 运行时环境要使用的更多信息。 具有 web.xml 文件,并由 Portlet/Servlet 容器使用。
将所有 xml 配置文件信息转换为声明性服务(DS)组件属性。像 portlet.xml、liferay-portlet.xml 和 liferay-display.xml 文件的标签和值。 使用 XML 进行配置,例如 portlet.xml、liferay-portlet.xml 和liferay-display.xml。
如果 Liferay 应用有更多的功能,那么我们将其分成多个独立的模块,这些模块在 OSGi 环境下可以非常容易地相互通信。 在 Liferay 插件开发中,模块化并不是那么容易,所以不得不将所有文件保存在单个 WAR 文件中。
引入了一个名为 BLADE CLI 的新工具来开发 Liferay 模块。 用插件 SDK 来开发 Liferay 应用。
拥有 Liferay IDE、Liferay Studio、BLADE CLI 等开发工具。 拥有 Liferay IDE、Liferay Studio 等开发工具。
支持 Gradle 和 Maven 构建环境。 支持 ANT 和 Maven 构建环境。
使用 Liferay Workspace 概念来管理跨平台的应用程序及其配置。 使用插件 SDK 来开发和管理插件。
使用了 OSGi API、声明式服务和 Apache Blueprint 框架。所以有限地选择使用像 Spring 这样流行的应用框架。Liferay 仍然不完全支持 Spring 模块,这意味着有些时候必须使用 WAR 部署。 可以使用任何流行的 J2EE Web 应用框架,比如 Spring、Struts 和 JSF。
Liferay 模块提供了基于微服务架构的应用程序。 为了使用微服务架构,必须依赖其他框架,如 Spring Micro 服务。
Liferay 模块具有动态组件开发功能,因此我们可以轻松地在任何时间点打开和关闭该功能。 Liferay 插件不像动态组件开发那样在一个插件应用程序中有很多功能。 如果我们删除一个插件,就会可以关闭很多功能。
Liferay 模块提供了简单的部署过程,可以轻松地从一个环境移动到另一个环境。Liferay Workspace 提供了这个能力。 Liferay 插件部署过程以及从一个环境转移到另一个环境的过程较为繁琐。并没有像 Liferay Workspace 这样的特殊机制。
使用 Bndtools 开发和构建模块。BLADE CLI、Liferay IDE、Gradle 和 Maven 等工具都在内部使用 Bndtools。 遵循 J2EE Web 应用开发,所以 Maven Liferay 插件或 Liferay IDE 可以处理开发和部署。

 转自:https://mp.weixin.qq.com/s/61urrPZo_l5u_zek-LwdUA

posted @ 2021-02-15 22:00  外星鸟  阅读(179)  评论(0)    收藏  举报