【问题标题】:Alternative to Liferay/JSR 168 and 286 Portals?Liferay/JSR 168 和 286 门户的替代方案?
【发布时间】:2023-08-04 07:42:01
【问题描述】:

我的团队一直在使用 Node.js、Twitter Boostrap、Mongo DB 和 Mule 为 ESB 编写仪表板应用程序。

最近一位高管要求我们改变对像 Liferay 这样的 Portal/Portlet 容器的方法。

我们团队中的一些人有使用 Liferay 的经验,我们对此有相当负面的感受。处理整页刷新、portlet 生命周期、样式和主题问题以及有限的 DBMS 覆盖等问题是我们抱怨的首要问题。

我们看到了我们的执行团队来自哪里。他们决定要使仪表板可扩展且易于或更易于插入到其他组中。

是否有一种解决方案可以平衡用户对现代 Web 的期望与关注构建和可扩展应用程序(如 Liferay)的 IT 专业人员和管理人员的企业需求?可插拔小部件在这里很重要。

Node 显然是我们的首选,Grails 之类的东西紧随其后。

谢谢,

【问题讨论】:

  • 门户解决了与 grails 不同的问题 - 例如。它提供了更多的基础设施,如用户和页面管理等。我不明白“有限的 DBMS 覆盖”是什么意思,因为您的 portlet 可以使用您想要的任何数据库。此外,整页请求很容易克服:您选择的 UI 库可以自动完成,也可以手动完成。到目前为止,除了“Liferay 不在您的偏好列表中”之外,我在您提出的负面论点中没有看到任何负面影响。
  • 感谢您的反馈。澄清更多。我可以使用 grails 实现类似于门户规范的东西吗?它有一个丰富的插件库,我想还有其他不喜欢 Liferay 的人。为此,我发布了我的问题。我想在没有 Portal 开销的情况下解决 liferay 解决的相同问题。此外,如果您有一些克服整页请求的好例子,那将是一个很大的帮助。也许我以错误的方式看待 Portal - 这是旧规范/旧技术。我主要关心的是在满足高管的同时提供良好的用户体验
  • 我会说门户是一个重载的词。您可以“轻松”地将新的 JS 方法和您的堆栈与 Liferay 提供的底层结构合并。无论哪种方式,Liferay 如今更多地朝着 OSGi 捆绑的方向发展,这些捆绑只是某种应用程序的包(可以是从 AlngularJS 到老式 JSP 的任何东西)。尤其是要让基于 JS 的应用程序成为一等公民,还有很多工作要做。深入挖掘,不要被旧的技术水平吓到。不管怎样,它不再是一个门户,而是一个数字体验平台:D

标签: node.js liferay portlet user-experience jsr286


【解决方案1】:

这个问题可能不太适合 * 的格式,但我仍然可以提供一些想法。

如果您想继续使用当前平台,您需要准确了解您的高管希望从迁移到新平台中获得哪些功能。您可以在当前平台中构建这些功能吗?与重写其他所有内容相比,这需要多少努力?在整个团队中学习一项新技能需要付出多大的努力?我确信您的团队可以有效地学习新技能,但这仍然需要努力,并且随着您的团队学习,会有成长的痛苦。如果您可以向您的主管证明您可以以相似或更少的努力获得相同的功能,并且您仍然可以拥有相似的总拥有成本,那么您可以提出继续使用当前平台的理由。

另外,我认为您低估了 Portlet 容器的功能。我主要使用 WebSphere Portal 工作,所以也许这就是为什么我认为您提到的大多数痛点对我来说并不难管理。仅仅因为您的容器需要特定的 DBMS 来管理自身并不意味着您不能使用单独的 DB 来满足您的自定义数据需求。 JSR-286 引入了 serveResource 作为一种使 AJAX 更容易在 portlet 中实现的方法。在 WebSphere Portal 中(不了解 Liferay),在不重新加载页面的情况下更改整个页面内容可能是您列表中最困难的,但我承认。

现代并不一定意味着尖端技术。如果您知道如何正确使用大型软件产品,它们仍然可以发挥作用,就像任何其他工具一样。

【讨论】:

  • 谢谢。我不认为我低估了 Portal 容器的能力,相反,我不希望它们带来额外的膨胀,这就是我的团队选择 node.js 的原因之一。它非常精简,您只需添加您需要的部分。全页刷新是我的一个大问题。因此,出于这个原因,我避免使用 Portlet。如果我看错了,我希望得到更多反馈。一些背景知识——大约一年前我参加了 Liferay 开发课程,所以当谈到它的工作原理时,我并没有完全一无所知。我最初的印象是开发是一场噩梦,使用体验不好
  • 当你说it was a nightmare to develop时,你似乎对Liferay有点偏见,可能是因为教练不好;-)。无论如何,您可以只刷新页面中的 portlet,而不是进行默认的全页面刷新。正如 Olaf 在他的评论中所说的 full-page-requests are easy to overcome: Either your UI library of choice automagically does it or you can do it manually. 然后它还带有一个细粒度的权限系统,我知道它带有许多可能不需要的功能,例如 OOTB 端口和其他东西。
  • 如果你能清楚地提到你的要求,我想这会帮助你做出决定。
  • “当您说开发是一场噩梦时,您似乎对 Liferay 有点偏见” - 我不知道这是对 Liferay 的偏见。我认为有很多人基于复杂性和局限性而对门户网站有偏见。我目前正试图阻止对门户/portlet 技术的持续投资,因为它们似乎不再相关。我非常同意这篇文章:JSR-286: The Edge of Irrelevance | Java.net.