做项目的都害怕销售和售前过于忽悠客户了,客户被绘制了一幅美好的IT蓝图,即快速又可靠,即简便又高效,谈笑间IT系统拔地而起,又快又稳的建设社会主义。其实长远来看还是要告诉客户软件开发没有银弹,再先进的产品和方法论,也只能做他能做的事情,一方面优化的代价是另一方面的弱化。在充分竞争的环境下,只要有需求,物美价廉是不存在的。开始阶段给客户错误的观念和不切实际的期望,只能在项目实施阶段砸自己的脚。闲话少说,书归正传。
1. SOA不能提高系统的性能。 恰恰相反,SOA只能降低原有系统的性能。 SOA实际上在原有系统之间增加了ESB一层,来做系统互联时数据接口协议转换。比起原有系统之间的两两直联,其实是增加了一个中间层。好处是减少了系统互联的复杂度,从n*(n-1)/2到n; 坏处是多做了层转换会消耗更多的时间。所有增加中间层的设计都是这样,原有互联的双方解耦了,但工作都推给中间层了。用时间来换取系统架构的清晰和可管理程度,换取的是系统的开发效率。
2. SOA不能快速实现新的业务功能。 SOA是强调已有功能的复用,快速构建新的应用产品,但对实现一个新的业务功能,也没什么神奇法宝可用。虽然一些ESB产品带有图形编排工具实现一些逻辑处理流程,但也只是适合开发比较简单的逻辑处理。复杂的数据处理逻辑使用这类图形编排工具实现比较困难。即便是简单的处理逻辑使用编排工具可以快速开发出来,但这些工程在版本维护,工程可读性,程序调试方面存在很多不足,所以整体的开发效率不一定有很大提高。关于图形编码工具,零编码客户有比较大的兴趣,但做项目的一定要清醒这个工具能做什么,不能做什么。打开这些工具生成的流程文件,都是XML的,可以看到逻辑处理流程的语法比起编程语言还是要简单化,弱化很多,不能指望完全用来替代编码。什么时候开发新的复杂的业务逻辑也简便而高效了,那应该就是计算机自己也能写程序了。
1. SOA不能提高系统的性能。 恰恰相反,SOA只能降低原有系统的性能。 SOA实际上在原有系统之间增加了ESB一层,来做系统互联时数据接口协议转换。比起原有系统之间的两两直联,其实是增加了一个中间层。好处是减少了系统互联的复杂度,从n*(n-1)/2到n; 坏处是多做了层转换会消耗更多的时间。所有增加中间层的设计都是这样,原有互联的双方解耦了,但工作都推给中间层了。用时间来换取系统架构的清晰和可管理程度,换取的是系统的开发效率。
2. SOA不能快速实现新的业务功能。 SOA是强调已有功能的复用,快速构建新的应用产品,但对实现一个新的业务功能,也没什么神奇法宝可用。虽然一些ESB产品带有图形编排工具实现一些逻辑处理流程,但也只是适合开发比较简单的逻辑处理。复杂的数据处理逻辑使用这类图形编排工具实现比较困难。即便是简单的处理逻辑使用编排工具可以快速开发出来,但这些工程在版本维护,工程可读性,程序调试方面存在很多不足,所以整体的开发效率不一定有很大提高。关于图形编码工具,零编码客户有比较大的兴趣,但做项目的一定要清醒这个工具能做什么,不能做什么。打开这些工具生成的流程文件,都是XML的,可以看到逻辑处理流程的语法比起编程语言还是要简单化,弱化很多,不能指望完全用来替代编码。什么时候开发新的复杂的业务逻辑也简便而高效了,那应该就是计算机自己也能写程序了。