新到portlet团队的应用程序开发人员对各种可用的新概念非常兴奋,因为这样就可以使开发过程变得容易些。JSR 286应用程序界面(规范化Portlet 2.0)中的资源服务设施可以使AJAX功能变得非常简单,事件处理使创建协作portlet变得极其容易,当然了,PortletPreference也使个性化portlet变得十分容易。但是,也正是因为PortletPreference,你要提高警惕。因为,任何有经验的portlet开发人员都会告诉你,永远也不要使用PortletPreference。
PortletPreference中存在的隐患
好吧,告诉你永远不要使用PortletPreference有点夸张了。PortletPreference也有其优势。PortletPreference存在的问题是,在典型的开发环境中大量使用PortletPreference是个较好的策略,首先假设PortletPreference不是portlet开发工具箱中很好的工具,当没有更好的地方存储用户信息只能选择使用PortletPreference。
PortletPreference会将用户想要使用特定portlet这样的信息永久地存储起来。例如,通过使用天气portlet用户可以将邮政编码信息输入到portlet中,然后portlet会把使用PortletPreference的信息存储起来。下一次用户访问portlet时,与用户输入的邮政编码相符合的天气信息就会显示出来。持久地存储这些信息,并将相应的数据给用户和portlet,都是由您在幕后通过门户框架来完成。这些听起来都非常不错,对吧?
好的,你可以问问自己:用户服务器如何存储PortletPreference信息?会将其写入硬盘吗?会像MogoDB那样将其写入小的、大数据存储中吗?会将其存储在DB2数据库的16KB空间中吗?当然了,大多数门户开发人员和系统工程师都不知道答案。PortletPreference数据如何存储完全取决于门户供应商。对于这个问题,Portlet开发人员、数据库或者门户管理员都不能很好地控制它。如果你去问一个数据库管理员他们如何看待不能很好地控制数据这个问题,他们会回答你:很不喜欢这种方法,同样你也不应该喜欢这种方法。
考虑应用程序效率
想象一下你在PortletPreference存储了真/假标志。PortletPreference不可能作为一个有效的布尔值在数据库中存储。这些信息可能被转化为字符数据,或一个CLOB或一些非常低效的数据。如果你编写了一个小程序存储到你自己的数据库中,你可以使用一个布尔数据类型,占用一点磁盘空间,这与用户使用的大型且不灵便的字符类型形成鲜明的对比。
此外,你是如何查找存储到PortletPreference的信息的?试想一下,你有一个税收portlet,根据用户的收入来估计税收负担。假设在PortletPreference中存储着用户收入信息。你如何返回及寻找那些收入信息。如果你的老板对你说“你知道如何在你创建的税收portlet中追踪用户收入信息吗?好的,我想要一份关于年收入超过100,000美元的用户名单。今天下午就给我。”你接下来会怎么做?
放弃控制数据
如果你不知道门户是如何存储PortletPreference信息,你也不知道门户是如何满足特定用户特殊偏好的,那么你会面临搜索信息的困难时期。在信息就是力量的时代中,你将数据控制在PortletPreference中,你就自动放弃了许多力量。
当用户想要实现一个简单的、可配置的portlet功能时,PortletPreference就显得非常强大。如果用户想要portlet是粉红色的背景,那么这一信息就会存储到PortletPreference中。如果用户喜欢使用14磅字体,将这部分信息存储在PortletPreference中。如果用户告诉你他居住在哪,收入是多少,那么,就确实应该考虑下是否存储为PortletPreference。
当一个软件开发人员或者门户解决方案架构师选择将信息存储到PortletPreference中,那么他们就放弃了控制数据存储的位置、数据存储方式以及未来搜寻数据是多么容易。想要控制就先要放弃,聪明的开发人员都明白其中的道理。
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
相关推荐
-
高效使用PortletSession小技巧
PortletSession有一个有趣的方面,就是在默认的情况下,它的数据实际上是存储的PortletSession中的,而且是本地的,只能访问portlet创建的实例。
-
尊重servlet API 高效开发portlet
即使是经验软件开发人员跳转到JSR-286 portlet开发时也会心乱如麻,portlet和servlet有什么不同?
-
Portlet开发技能使Java专业人才需求巨增
Portlet机制越来越流行,越来越多的Java开发人员要求学习Portal API,那么它与servlet有什么异同?
-
整合WebSphere Portal 7和Spring 3.0 Portlet MVC(下)
下面的步骤描述如何安装Spring 3 Portlet MVC的应用程序。如果你已经知道如何部署应用程序,请随时跳过此章节。