我正在考虑将应用程序开发为portlet,以便集成到Liferay门户中。开发这样的应用程序是否有任何明显的缺点或限制,而不是使用Spring框架开发普通的Web应用程序?
Liferay似乎要求将所有内容添加为portlet。我想到的另一个选择是将Liferay仅用于应用程序的某些部分,并添加外部链接到其他自行开发的内容,这些内容是作为普通的Web应用程序开发的。但是,这将需要多个用户身份验证机制以及Liferay与其他Web应用程序之间的某种跨站点身份验证。
哪种方式最好?
答案 0 :(得分:30)
(免责声明:我是Liferay的开发人员之一)
我认为两种选择都很好,取决于您的需求。如果您以前有开发独立Web应用程序的经验但没有开发portlet的经验,那么选择前者将使您更快地开始。缺点是您必须实现自己的用户和权限系统,并且无法利用Liferay提供的门户服务。如果您决定使用此备选方案,请注意您可以将常规WAR文件部署到Liferay,它会自动创建一个使用iframe显示您的应用程序的简单portlet。这将允许您将独立应用程序与Portlet放在Liferay的页面中。
当您开始利用它提供的门户服务时,为Liferay开发portlet会开始获得回报。首先,通过开发portlet,您可以忘记开发自己的用户系统并使用Liferay提供的用户系统(功能非常强大)。您还可以使用其他服务,如权限,注释,标记,分类,数据范围等,这将使您能够在更短的时间内开发出非常完整的应用程序。缺点是,你第一次这样做时,你将不得不学习几个新的东西,但第二次你会更快。
我希望有所帮助。
答案 1 :(得分:27)
我一直在使用Liferay大约2年来进行内部应用。在我们第一次发布之前,我们在整个开发周期中多次进行了相同的讨论。我们不得不多次与Liferay战斗,有时是因为我们自己缺乏知识,有时是因为portlet环境,偶尔因为Liferay。
如果您想要从门户网站获得多个应用程序的布局选项,那么您当然应该使用Liferay。如果您正在编写单个应用程序,那么我可能不会使用Liferay。我认为Liferay与其他一些不同的混合是迄今为止最糟糕的选择。
我们可能没有充分利用Liferay的功能,但如果这是你的第一个Liferay应用程序,那么你很可能也不会因为学习曲线。我们最初希望为我们的应用程序的不同方面提供许多不同的portlet,但由于在开发过程中缺乏良好的portlet间通信机制(在JSR-286之前),我们最终编写了一个应用程序。现在我们最终进入那条船,我希望我们没有Liferay,因为我们真正使用的是一些用户管理功能。
我们使用JSF和facelets(这两种新技术都是我们的,所以痛苦可能是自我造成的)虽然我们已经做得更好,但似乎有一些箍我们必须跳过才能让它在portlet中正常工作;在常规的Web应用程序环境中不会发生的事情。对于许多框架,似乎portlet支持是事后的想法。这显然不是Liferay特有的,它只是在portlet环境中工作的副产品。
在使用Spring MVC,Struts,Faces,Wicket等的webapp中,你将对所有内容有更多的控制权,但也负责实现更多的东西。
在portlet中,您将受JSR-168和/或JSR-286条款的约束。门户网站容器将为您提供一些功能,例如用户身份验证,但IMO是一个用于用户身份验证的整个门户网站。我看到门户网站的强大功能是允许用户自定义多个应用程序的视图,而不是单个应用程序。
您应该查看与portlet相关的规范,看看它是否符合您的需求。
http://developers.sun.com/portalserver/reference/techart/jsr168/
答案 2 :(得分:12)
Liferay是一个功能非常强大的系统,有许多服务和应用程序可供现成,但最大的缺点是缺乏文档。只看代码就不可能知道所有内容,所以在我看来,如果你没有专业知识,就不要去Liferay。
答案 3 :(得分:8)
Liferay和portlet通常适用于非常特定的应用程序类。如果您正在为IT部门工作并且需要为多个部门组合应用程序,那么portlet将是您的最佳选择。理论上,您可以从不同的供应商处下载portlet,并且它们将在同一环境中和谐地生活。
但是,如果您正在构建以下任何一种应用程序
1)完全由一个团队创建 2)具有单一的要求来源 3)要求不是portlet容器中可用功能的子集。 4)有一个不愿意生活在门户风格应用程序范围内的图形设计师。
然后坚持使用像Spring这样的东西。Spring及其许多子项目提供了很多portlet提供的共享服务和基础架构,但它们以开放且更灵活的方式提供。你可以挑选你想要的东西。
Portlet在身份验证和授权,导航和布局方面为您做出了很多设计决策。如果您的应用程序的计划超出了这些决定,那么您将花费大量时间来创建变通方法,以尝试让它做您想做的事情。
答案 4 :(得分:6)
每个人,请不要把它当作拖钓/燃烧。这是我觉得Liferay社区应该解决的问题,每个想使用Liferay的人都应该知道。
缺点:没有文档。什么都没有,例如,Hibernate的文档。只是一个空的javadock(代码中没有注释),一些在论坛和旧版本的书籍中回答了问题(没用)。
答案 5 :(得分:3)
我一直认为像Liferay这样的门户应该被视为类似于共享基础设施。它们提供了访问应用程序,共享服务(例如身份验证)和标准部署方式的常用方法,但却以性能为代价。
如果您打算不仅仅将此应用程序部署到Portal中,那么,它可能是合适的,因为您不必再次开发这些共享服务,从而节省时间/成本。后续应用程序的外观和行为与此类似。
但是,如果这是唯一要部署的应用程序,那么Portal的开销并不值得,而且最好使用普通的Web应用程序。
答案 6 :(得分:0)
Liferay具有CMS功能,可以与Alfresco等外部CMS平台集成。
答案 7 :(得分:0)
男,看看这个解决方案Netbeans IDE + PoralPack3.0插件+ Liferay 5.2捆绑。这里的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