传统的WEB开发总是以Page为中心的,这样的一个不足之处就是显得并不灵活,Page总是一种粒度较大的单元,并不适合于功能的重用,而组件则是粒度 较小的单元,一般无法完成独立的功能。在这二者之中,就是一个完成独立的功能项目的组件,大家习惯于称之为portlet的东西了。
JSR168定义了在servlet环境下的Portlet规范,说实在的,Portlet在概念上非常的简单,通俗一点的理解就是一个Delphi的 Form或者类似的东西而已,可以跟别的Form放在一个Window下而已。实在搞不明白的是为什么会被那么多大的软件公司搞得那么复杂。2年以前,一 个Portal的解决方案、和平台怎么着也得跟500K的报价关联在一起,而且还复杂得不得了。JSR168总算把Portlet的神秘身份通俗化,随着 越来越多的OpenSource的Portlet解决方案面世,基于JSR168的portal开发在门槛上降低了很多。
不过,如果将Portlet的实现转移到浏览器端来完成,则可以更为简单,而且实现的效果会更好。今天早上粗粗的看了以下www.live.com这个新 玩意,号称是Microsoft.com的新一代屠龙宝剑,确实给人的感觉有点震撼。微软称之为 Gadgets 的东西,实际上也是一种Portlet吧。
我在考虑可以在easyajax中增加对Portlet的支持,大致的想法是:
1、PortletContainer 这个组件提供了包容多个Portlet的功能,同时,它也提供了对Portlet的拖放管理的功能。在很大的程度上,PortletContainer提 供了一个类似于类似于VisualStudio或者eclipse的Dock容器。
2、PortletView 这个组件提供了单个的Portlet的边界,提供了最小化、最大化、拖放的公共功能。就像Windows中的一个窗口一样。
3、Portlet。实际应用的Portlet实现。easyajax可以定义一个规范,来实现独立的Portlet。最简单的Portlet就是一个 javascript,它在portletView中render出内容。或者是一个iframe形式的内容。更复杂一点的,可以慢慢来发展。
在easyajax中实现Portlet,应该来说是相当 有吸引力的,其一:如果我们的WEB向www.live.com一样,这很显然具有很大的亮点。其二:Portlet简单化、标准化后可以促使可以开发很 多标准的、安装可用的portlet,这些都是高度可重用、可安装的组件,或者说是服务,能够有效地提供一个市场化运作的平台。
主要的工作量预计:PortletContainer/PortletView 参考设计:eclipse的视图管理模式。