作者: 亓锋                         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了。 去看看R5\R6\R7\R8的iNotes,再去看看微软的Exchange的Web Access。 只能说IBM太“落伍”了。

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

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

IBM应该请我去做Domino产品设计架构师的更多相关文章

  1. IT架构师介绍-软件架构设计学习第一天(非原创)

    文章大纲 一.架构师定义二.架构师分类与具备能力三.研发人员发展的技术路线四.架构师知识体系五.参考文章   一.架构师定义   什么是架构师,这个聊架构话题时永恒的问题.每个公司对架构师的定位也有所 ...

  2. 【产品 & 设计】入门 - 工具篇 - Sketch + Skala Preview

    前言 做产品和设计快 1 年了,积累了一点经验分享一下 —— 抛砖引玉,欢迎交流. 声明  欢迎转载,但请保留文章原始出处:)  博客园:http://www.cnblogs.com 农民伯伯: ht ...

  3. 产品设计中先熟练使用铅笔 不要依赖Axure

    在互联网产品领域,Axure已成为产品经理.产品设计师以及交互设计师的必备工具,从某种程度讲,Axure帮助我们建立低保真模型,便于与用户的需求验证,也帮助我们构思交互细节,使前端和开发人员更容易理解 ...

  4. UI产品设计流程中的14个要点

    http://www.sj33.cn/digital/wyll/201404/38318.html 自从我在 Dribbble 上贴了一幅我的产品设计成果,受到了大家伙热烈的反馈,对此我深受鼓励,我决 ...

  5. 浅谈由管理者角色引出的B端产品设计思考点

    本文来自网易云社区 作者:任琼瑶 最近一直都在持续跟进云课堂B端的交互设计,在此期间,多多少少遇到了一些不曾遇到过的问题,虽然同是做产品设计,但B端和C端产品的确存在很多不同之处. 首先,当我们在做C ...

  6. 进阶篇:4.1)DFA设计指南:简化产品设计(kiss原则)

    本章目的:理解kiss原则,明确如何简化产品的设计. 1.前言:kiss原则,优化产品的第一原则 如果要作者选出一个优化产品的最好方法,那一定是kiss原则莫属.从产品的整体设计到公差的分析,kiss ...

  7. H5活动产品设计指南基础版

    本文来自 网易云社区 . H5一般页面不会很多,看似简单,实际上会有很多细节需要注意,我自己在做过了几个H5之后,发现了一些常犯的问题,做了小结,希望给新开始做H5的产品相关的同学提供一些帮助.  首 ...

  8. 前端开发工程师 - 05.产品前端架构 - 协作流程 & 接口设计 & 版本管理 & 技术选型 &开发实践

    05.产品前端架构 第1章--协作流程 WEB系统 角色定义 协作流程 职责说明 第2章--接口设计 概述 接口规范 规范应用 本地开发 第3章--版本管理 见 Java开发工程师(Web方向) - ...

  9. 年轻的心与渐行渐近的梦——记微软-斯坦福产品设计创新课程ME310

    作者:中国科学技术大学 王牧 Stanford  D. School 2014年6月,沐浴着加州的阳光,在斯坦福大学(下文简称Stanford)完成汇报后,历时一年的创新设计课程ME310的项目结束 ...

随机推荐

  1. CATEGORICAL, ORDINAL AND INTERVAL VARIABLES

    WHAT IS THE DIFFERENCE BETWEEN CATEGORICAL, ORDINAL AND INTERVAL VARIABLES? In talking about variabl ...

  2. Create an Android library

    官方文档 创建 Android 库 [Create an Android library] Android 库在结构上与 Android app module 相同.它可以提供构建应用所需的一切内容, ...

  3. AOP AspectJ 字节码 语法 MD

    Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...

  4. windows下mysql忘记root密码的解决办法

    今天早上 一朋友说自己的mysql 忘记root密码了 让我帮忙给看看,因为没有接触过mysql 所以从网上找了一下信息经我亲身实践  已经成功!mysql版本是5.1以下是从网上找的信息: 1. 首 ...

  5. android 微信听筒无声

    Dual talk项目sim卡插在卡2时.微信听筒无声: 第三方APP在听筒接听语音时会固定去设audio_mode为incall,而不会去管以下是sim1还是sim2在位. 而speechdrive ...

  6. 条件随机场(CRF)理论及应用

    http://x-algo.cn/index.php/2016/02/15/conditional-random-field-crf-theory-and-implementation/ 条件随机场( ...

  7. Python3 使用 matplotlib 画折线图

    ChartUtil.py import matplotlib.pyplot as plt from pylab import mpl def plotLine(xData,yData,xLabel,c ...

  8. 本地时间转化成 GMT 时间

    DateTime.Now.ToUniversalTime().ToString("yyMMddHHmmss");

  9. HttpWebRequest抓取网页数据返回异常:远程服务器返回错误: (503) 服务器不可用

      解决方法:   HttpWebRequest request = (HttpWebRequest)WebRequest.Create(webURL);                //声明一个H ...

  10. 调试工具DebugView

      可以用来跟踪如下函数的输出: Win32 OutputDebugString Kernel-mode DbgPrint All kernel-mode variants of DbgPrint i ...