Java Portlets的优缺点是什么?

6

我有一个项目,客户要求我使用Portlets 1.0规范和Websphere Portal Server 6.0。我以前没有使用过Portlets,但我听说它们总是受到负面评价。除了显而易见的原因之外,还有什么理由可以使用它们吗?如果没有理由,我可以用什么论据来避免使用它们?

3个回答

9
作为一个曾经从事过开发Java portlets的人(包括我目前的工作),我认为你不应该使用它们。
问题在于:
如果你只是想使用所选择的门户网站的预先存在的功能,那么请使用门户网站。
如果你使用 portlets 只是为了构建一个小型、轻便、主要用于只读的基于 Web 的仪表板,以便快速查看不同的信息,那么这是可以的。
但如果你(或更可能是组织结构图上层的某个人)认为 portlets 是将许多不同的 Web 应用程序放在一个页面上并使它们“正常工作”的方法,则会遇到很多问题。Portlets 是高度限制的、自包含的功能区块,而不是页面上的微型 Web 应用程序。
每个基于 portlet 的工作都犯了这个错误,而且没有什么好办法。作为一个 portlet 开发者,以下是一些你通常在常规 Web 应用程序中做的事情,在 portlets 中无法可靠地执行的一些小清单:
生成指向其他页面的 URL。你需要使用供应商特定的方法来实现,因为 Portlet API 仅允许你生成针对生成它们的 portlet 的 URL。
读取和设置 HTTP 标头或设置 HTTP 响应代码(因此不能进行重定向或 HTTP 缓存,因为你不拥有将放置在 portlet 上的页面)。
必须对生成的页面中的所有标识符进行命名空间处理。这意味着 HTML id 属性和 JavaScript 函数名称。由于命名空间必须在运行时确定以确保唯一性,因此你不能让这些 JavaScript 函数驻留在一个单独的浏览器可缓存文件中,它们必须在 portlet 的响应正文中。
Portlets 的感觉就像是它们是为 90 年代中后期(AJAX 前)的 Web 开发状态而设计的。但是它们不适合今天的 Web 开发环境(AJAX、单页面富 Web 应用程序等),这些环境假定您完全控制请求/响应周期。

5
我对Portlets的问题感到困扰,这让我想起了EJB的同样问题-
  • portlets需要编写特殊代码,只能在特殊服务器上托管和运行;
  • 每个portlet服务器供应商都有自定义扩展/配置/附加功能,因此更改服务器供应商并不是微不足道的;
  • portlets似乎过于复杂,以涵盖90%的人想要使用的功能。

我建议使用Google Gadgets作为Hibernate到portlet的EJB-

  • Javascript框架-可以使用任何语言编写服务器端部分,托管在任何服务器上。
  • 更易于使用
  • 许多门户服务器都支持它,并且它更便携,因为它不像Portlets那样复杂,也不是供应商实现(和扩展)的规范

3
Portlets能够让客户调整和重新排列页面上的组件,非常具有灵活性,如果你主要提供内容,那么Portlets是一个有效的手段。从我的角度来看,门户网站很适合聚合纯内容、功能独立或简单相关的Portlets(例如当您从一个Portlet中选择一个项目时,您会更新另一个Portlet以显示详细信息)。Portlets还可以实现重用,因为您可以将它们配置到多个页面/位置中。但是,当您尝试分解具有多个步骤和交互的复杂业务函数时,问题可能会开始。在这种情况下,确定Portlets的粒度更多的是一门艺术而不是科学,并且需要仔细考虑Portlets之间的交互。您还需要考虑UI的灵活性。如果您有一组Portlet构建块,则业务需明确它们可以重新排列这些块,但是在Portlets之间移动元素需要进行重写。因此,总的来说,我想这取决于您想要做什么以及您预期组件的多少重用。通过创建IT构建为Servlets的技术组件来管理重用可能更简单,或者Portlets可能非常适合您的业务。没有正确答案,您只需要仔细考虑您要实现的目标。如果您决定使用Portlets,需要全面接受它们的生命周期,并避免任何绕过它们的诱惑,否则您可能会迅速陷入不利境地,而无法实现优势。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接