zoukankan      html  css  js  c++  java
  • IBM应该请我去做Domino产品设计架构师

                                

                                


                                  作者: 亓锋                         2012年11月19日16:56  来源: 速途专栏                         我要评论(2)                       访问次数 4585                      
     

                      
                          

                      

      (速途网专栏 作者:亓锋)说实话,Lotus Domino R6开始,我就对Domino的技术进步开始有些意见了。

      如果你很早接触Lotus Domino/Notes,那么真正在国内大面积应用的版本起始于R4.5/4.6。

      真正让我最难忘的一次Lotus Domino的升级换代是4.5/4.6升级到R5。为什么?因为那时候正值互联网技术大发展,R5一推出就赶上了这个时代,而且真正地做到了对当时主流的互联网协议和技术的兼容,例如HTTP/HTTPS,SMTP/POP3/IMAP,IIOP……可以说,如果让我来评价Lotus Domino/Notes的经典版本,绝对是R5莫属!

      我不知道那时候谁是主导Domino技术方向的IBMer,但是我真的佩服他的先见之明和勇气,将一个原本传统的C/S软件全面面向Internet。

      Lotus Domino/Notes的历史,可以参考这个官方链接:http://www.ibm.com/developerworks/lotus/library/ls-NDHistory/

      这里我可以告诉大家一个版本号的规律。 如果一个产品的版本号是1、2、3,这是产品的大换代,应该可以认为是从产品架构或者理念的一次飞跃。如果产品版本是1.5、2.5之类的,绝大多数属于增加了一些新特性的产品。纵观Domino的版本,有两个版本可以说是最让人感到尴尬的:6和6.5、8和8.5。关于R6和R6.5的区别,大家可以上网去查一下。 基本上可以说,IBM在产品升级换代的时候,缺乏对自己的技术领导力的信心!

      从技术层面上说,Domino其实可以做的更好,就看IBM怎么投入的问题了。

      1、引入key-value技术,提高Notes数据库的查询效率:这个为什么不做?多少年了,Notes开发人员不断地优化Notes数据库的查询算法,根本解决不了这个问题。

      2、将应用程序和数据存储彻底分开管理:大家都知道,NSF中既包括数据,也包括设计元素。这有好处也有坏处。好处就是你的应用部署容易了,坏处就是你不得不考虑大中型应用的设计元素如何分配和管理。为什么不做一个设计元素管理层,一个数据存储层,两个架构做到独立管理呢?姑且这个架构叫服务器存储模式吧。

      3、全面支持HTML5/CSS3:设计元素可以直接转换为HTML5代码,并自动生成对应的CSS3代码。

      4、允许一个Notes应用使用应用本地存储,允许设计元素与本地存储共存,这个架构模式就叫本地存储模式吧。这个和第2点不矛盾。为什么这样做?一是兼容现在的NSF,另一个就是我要说的下一点。

      5、本地存储模式的应用可以自带运行时需要的本地运行时环境(Local Runtime Environment),而这个本地运行环境可以支持iOS/Android/Windows Phone。这样,一个Notes应用就可以部署到移动设备上。离线时使用本地存储来存储数据,一旦联网,就可以和服务器同步数据。其实这个机制,在很久以前的一个产品Lotus EasySync Pro用到过。2000年我还做了一个Notes Apps运行在Palm上。Palm在连接电脑上以后,可以通过电脑上EasySync Pro客户端和服务器同步数据。现在就是要做一个运行在移动终端的EasySync Pro。

      6、Notes的开放接口太少了,只有COM、Java API和C++ API,而且使用起来太繁琐了,并且这些API是针对整个Domino系统的,而针对于单个Notes应用的API还要开发人员自己封装。 所以,要引入一种叫"数据库API"的设计元素。Notes开发人员可以选择API类型:COM、Web Service、Java,C++……通过编写LS代码,将这个Notes应用本身的功能发布成API共第三方调用。 别和我说什么Web Service,其实如果人家不做在线应用,Web Service有毛用! 这点和第5点结合,就可以允许一个运行在移动终端中的第三方程序使用Notes做存储。

      7、重新开发iNotes。使用WebHybrid技术不便于扩展和维护。iNotes将使用HTML4/HTML5/CSS2/CSS3,既然用了Dojo,就彻底用Dojo来改造iNotes。

      8、增强TeamRoom,RnR等模板的Web体验。

      9、彻底解决复制和保存冲突的问题。人家RDBMS用了那么多年了,好像还没有这等事吧?技术上不是很难吧?

      10、引入虚拟化,允许在一个Domino服务器上运行多个应用集,应用集是多个Notes应用的集合。这样不安装群集,也可以提供Notes应用的负载均衡和失效转移。

      11、把Domino作为一个独立于J2EE和.Net的一个中间件产品来进行产品定位,提高运行效率,增加更多的企业应用服务功能。Domino目前还是以数据库服务为基础,增加了邮件、web等功能。一定要好好重新考虑产品技术架构了。

      12、微软已经推出了面向企业用户的Office365,这是一种在企业云服务上面的尝试,我有几个客户很感兴趣,并且开始试用了。IBM什么时候能够做到把协作平台做成云服务呢?其实完全可以利用IBM BP的优秀的解决方案和产品,为企业用户提供类似于AppStore的云服务。客户需要什么功能,只要选择某个BP的应用,就可以直接配置和使用了。IBM的优势不在于平台,而在于众多的BP提供的解决方案和产品。利用BP手里客户化的应用,吸引企业客户使用IBM的云平台。

      在说一说这几年IBM的Lotus产品线的问题。【http://www.lotuschina.net/club/v ... e=0&page=3#pid18075】

      可以说这几年,IBM一直在犯一个错误,这个错误将导致出现一个好的Notes应用越来越难,Lotus在用户群中越来越容易被忽视,而让开发者越来越感到无奈。

      这个错误就是:一方面IBM不断推出Lotus产品线的新产品,例如Quickr、Connections等等,可是越来越倾向于使用WebSphere。另一方面IBM在Domino的开发技术上又不断加入新的技术进来,例如eclipse架构的designer,XPages等。一方面让用户不断接受基于WebSphere上的协作产品,一方面又在开发技术上取悦开发者,这样做是不是有点怪?

      另一个错误就是,IBM在不断地将Domino作为一个软件而不是一个中间件平台来卖! 用户采购Domino是为什么?邮件服务器功能是大多数的首选,可惜被微软的Exchange打击的一塌糊涂。应用开发平台?是个IT主管都知道,现在不是Java就是.Net,我再土气一点用PHP好不好? 去看看微软的策略,人家就是先把Domino贬低为邮件服务器,然后用Exchange来打击它。微软不会承认Domino是一个中间件平台,否则用户宁愿选择一个带有邮件服务器的中间件平台了。谎言说了多少年,市场上也就信了。而IBM反击了吗?没有!为什么?自满和自足呗。 真不知道IBM的市场部门是不是吃干饭的,市场上贬低对手和反击都不会。全靠销售人员的嘴巴去说服客户,给用户讲解Domino的中间件特质。这就是我为什么要提出上面的第11点。

      第三个错误,就是IBM在Domino自身的产品线上做得太过分散。虽然像sametime这样的软件可以运行在Domino上,但是它还是被当成一个产品而不是一个真正的中间件上的组件应用!Domino产品线的延伸产品应该是组件化的产品,而不是单独的产品。要像J2EE的war包一样部署应用才对!可以说如果将Lotus整个产品线的产品集中起来,完全可以与微软竞争的,可是太过离散的延伸产品线,被微软各个击破了。

      第四个错误,IBM从来不敢在用户体验上做出跨步式的发展。微软真的敢,竟然敢在SQL 2008中将SQL 2005的reporting Services的架构给改了;把用了多年的桌面变成Windows 8 UI了。 去看看R5R6R7R8的iNotes,再去看看微软的Exchange的Web Access。 只能说IBM太“落伍”了。

      IBM的产品设计思路,还是太过于保守。基本上没有敢作敢当的闯劲。不能在现在进行大规模的转型,向移动化、虚拟化和云服务前进,IBM的软件产品迟早被淘汰。

      多年的发展,Domino确实落伍了。 IBM,你还是让我当Domino产品架构设计师吧。

  • 相关阅读:
    python--DenyHttp项目(2)--ACM监考客户端测试版☞需求分析
    python--DenyHttp项目(1)--调用cmd控制台命令os.system()
    python--DenyHttp项目(1)--GUI:tkinter☞ module 'tkinter' has no attribute 'messagebox'
    python--DenyHttp项目(1)--socket编程:服务器端进阶版socketServer
    python--DenyHttp项目(1)--socket编程:客户端与服务器端
    python生成excel格式座位表
    PythonTip--一马当先--bfs
    python pygame--倒计时
    修改Hosts文件,禁止访问指定网页
    字符串常用-----atof()函数,atoi()函数
  • 原文地址:https://www.cnblogs.com/hannover/p/4844955.html
Copyright © 2011-2022 走看看