30

我正在考虑将应用程序开发为 portlet,以集成到 Liferay 门户中。与使用 Spring 框架开发普通 Web 应用程序相比,开发此类应用程序是否有任何明显的缺点或限制?

Liferay 似乎要求所有内容都作为portlet 添加。我考虑的另一个选择是仅将 Liferay 用于应用程序的某些部分,并添加到其他自开发内容的外部链接,作为普通 Web 应用程序开发。但是,这将需要多种用户身份验证机制以及 Liferay 和其他 Web 应用程序之间的某种跨站点身份验证。

最好的方法是什么?

4

8 回答 8

29

(免责声明:我是 Liferay 的开发人员之一)

我认为这两种选择都很好,具体取决于您的需求。如果您以前有开发独立 Web 应用程序的经验,但没有开发 portlet 的经验,那么选择前者会让您更快地开始。缺点是您必须实现自己的用户和权限系统,并且无法利用 Liferay 提供的门户服务。如果您决定使用此替代方案,请注意您可以将常规 WAR 文件部署到 Liferay,它会自动创建一个使用 iframe 显示您的应用程序的简单 portlet。这将允许您将独立应用程序与 Portlet 一起放在 Liferay 的页面中。

当您开始利用 Liferay 提供的门户服务时,为 Liferay 开发一个 portlet 开始获得回报。从开发一个portlet 开始,您可以忘记开发您自己的用户系统并使用Liferay 提供的系统(它非常强大)。您还可以使用其他服务,例如权限、评论、标记、分类、数据范围等,这将使您能够在更短的时间内开发出相当完整的应用程序。缺点是第一次你必须学习一些新东西,但第二次你会走得更快。

我希望这会有所帮助。

于 2009-05-11T17:48:38.063 回答
27

我已经使用 Liferay 大约 2 年了,用于内部应用程序。在我们第一次发布之前,我们在整个开发周期中多次进行了相同的讨论。我们不得不和Liferay打了几次,有时是因为我们自己缺乏知识,有时是因为portlet环境,有时是因为Liferay。

如果您想要从门户获得的多个应用程序的布局选项,那么您当然应该使用 Liferay。如果您正在编写单个应用程序,那么我可能不会使用 Liferay。我认为一些 Liferay 和一些不是 Liferay 的混合是迄今为止最糟糕的选择。

我们可能没有充分利用 Liferay 的功能,但如果这是您的第一个 Liferay 应用程序,那么由于学习曲线,您很可能也不会。我们最初希望为应用程序的不同方面提供许多不同的 portlet,但由于在开发过程中(JSR-286 之前)缺乏良好的 portlet 间通信机制,我们最终编写了一个应用程序。既然我们最终上了那条船,我希望我们没有 Liferay,因为我们真正使用的只是一些用户管理功能。

我们使用 JSF 和 facelets(对我们来说都是新技术,所以痛苦可能是自找的),虽然我们已经做得更好了,但似乎我们必须跳过一些障碍才能让它工作在 portlet 中正确;在常规 Web 应用程序环境中不会发生的事情。对于许多框架来说,portlet 支持似乎是事后才想到的。这显然不是 Liferay 特有的,它只是在 portlet 环境中工作的副产品。

在使用 Spring MVC、Struts、Faces、Wicket 等的 web 应用程序中,您将对所有内容有更多的控制权,但也需要负责实现更多的东西。

在 portlet 中,您将受到 JSR-168 和/或 JSR-286 条款的约束。门户容器将为您提供一些功能,例如用户身份验证,但是 IMO,用于用户身份验证的整个门户太重了。我看到门户的强大之处在于允许用户自定义他们对多个应用程序的视图,而不是呈现单个应用程序。

您应该查看与 portlet 相关的规范,看看它是否符合您的需要。

http://developers.sun.com/portalserver/reference/techart/jsr168/

于 2009-05-14T22:59:00.223 回答
12

Liferay 是一个非常强大的系统,有许多现成可用的服务和应用程序,但最大的缺点是缺乏文档。只看代码不可能知道一切,所以在我看来,如果你没有专业知识,就不要选择 Liferay。

于 2009-11-13T08:04:36.677 回答
8

Liferay 和 portlet 通常非常适合特定类别的应用程序。如果您在 IT 部门工作并且需要为多个部门或由多个部门组合应用程序,那么 Portlet 将是您的最佳选择。从理论上讲,您可以从不同的供应商那里引入 portlet,它们将在同一个环境中和谐相处。

但是,如果您正在构建的应用程序属于以下任何一种

1) 完全由单个团队创建 2) 具有单一的需求来源 3) 具有不是 portlet 容器中可用功能的子集的需求。4) 有一个不愿意生活在门户样式应用程序范围内的图形设计师。

然后坚持使用像 Spring 这样的东西将是要走的路。

Spring 及其许多子项目提供了许多由 portlet 提供的共享服务和基础设施,但它们是以开放和更灵活的方式提供的。你可以挑选你想要的。

Portlet 在身份验证和授权、导航和布局方面为您做出许多设计决策。如果您为应用程序制定的计划超出了这些决定,您将花费大量时间创建变通方法来尝试让它做您想做的事情。

于 2009-05-16T06:45:04.353 回答
6

每个人,请不要把它当作拖钓/燃烧。这是我认为 Liferay 社区应该解决的问题,每个想使用 Liferay 的人都应该知道。

缺点:没有文档。甚至没有什么像 Hibernate 的文档那样遥不可及。只是一个空的javadock(代码中没有评论),论坛和旧版本书籍中的一些回答问题(无用)。

于 2010-12-09T07:15:21.827 回答
3

我一直认为像 Liferay 这样的门户应该被视为类似于共享基础架构。它们提供了访问应用程序、共享服务(例如身份验证)和标准部署方式的通用方式,但以性能为代价。

如果您打算在门户中部署的不仅仅是这个应用程序,那么是的,这可能是合适的,因为您无需再次开发这些共享服务即可节省时间/成本。后续应用程序的外观和行为将与此类似。

但是,如果这是唯一要部署的应用程序,那么门户网站的开销并不值得,您最好使用普通的 Web 应用程序。

于 2009-05-08T09:46:17.010 回答
0

Liferay 具有 CMS 功能,可以与 Alfresco 等外部 CMS 平台集成。

于 2009-05-14T10:56:32.957 回答
0

伙计,看看这个解决方案 Netbeans IDE + PoralPack3.0 plugin + Liferay 5.2 bundle。这里的 Portal Pack 通过为 service.xml 文件提供一个很好的 GUI 编辑器来帮助您,您可以在其中定义实体或数据库结构,并且可以从同一个 GUI 生成可以在您的 portlet 中使用的服务代码。

有关更多信息,请查看以下给出的链接: http ://www.liferay.com/web/satyaranjan/blog/-/blogs/portal-pack-:-write-database-portlet-using-service-builder-plug-in

于 2010-02-07T20:54:01.203 回答