1.程序员就是技术工人,使用好的工具就是为了提高生产率。刚出学校大门,遇到了
2.SCA和SDO的出现,给SOA来了点实际的。SCA(Service Component Architecture)其实就是将过去EJB的成果继续下去,基于Component的复用,同时吸收了IOC的思想,Component之间的组装是通过SCA框架来实现的,但是很重要的一点,他没有走EJB的老路,而是学习spring的轻量级框架,不再为开发者作的面面俱到,其实,特别对于中国的程序员来说,不需要太多的框架去限制他们,只需要给他们一个可以订制的灵活的框架即可,他们的手艺都不错,同时也可以在这个订制的阶段学到很多,这也是为什么开源项目吸引那么多高手的原因,因为参与和创造才能给程序员一种自我实现的快感。SCA的Component和OSGI的Bundle一样其实是对Java封装的一种贯彻,它有需要Import的服务引用,需要Export的服务,很重要一点就是它对于Component,service,reference的实现都没有作限制,这类对象只需要有个接口定义和实现描述即可,当前规范中支持的接口定义可以是java接口也可以是wsdl文件(最终也是转换成为java接口),实现的话那么更加广泛java,webservice,rmi,jms,脚本语言等等,同时提供了扩展接口,所以只要你想的到,就可以实现的了。然后多个Component组装成为一个Composite(对于业务开发来说,也就是一个业务的Model)。
3.一种约束。对于JAVA开发人员来说,看你是否有经验,其实看看你写的代码就能略知一二,能够抽象设计,能够针对面向接口考虑,那么这个开发者多多少少对于面向对象就有一些认识。在我们现在的业务开发者开发的系统来说,让人很头痛的一件事情就是,我们可以约束Java的规范性,但无法约束业务开发的规范性,好比客户模块一堆类,实现了一大堆功能,订单模块需要查询客户信息,这时候开发者不会去和开发客户模块的人员交流,自己开发了直接访问客户信息代码,结果就是,维护成本大,客户模块修改了,他不知道到底有多少模块需要去更新,反复的重写同样的逻辑,最要命的就是系统的耦合度增加,无法单独的将这些业务模块独立出来,系统没法根据业务模块来拆分。而如果基于更高级的组件复用和服务复用,那么模块间的信息交互不得不通过接口的方式来调用,这就提供了一种业务开发的约束。
4.SCA和OSGI的互补。记得在论坛上有人讨论过SCA和OSGI的优劣,但其实作为这两个规范面向的解决问题都是不同的,SCA是SOA的一个实现,SOA是解决分布式服务的互通问题,而OSGI是针对单机服务的动态绑定义及组装,因此两者不存在着可比性,但是在我看来,两者却有着很好的互补性,在平台的现有情况下,用SCA来实现服务框架,同时通过OSGI来实现组件装配,这无疑是很好的一件事情,同样有个开源项目也正在做这件事。
其实,任何技术开发人员都喜欢采用最新最流行的,但是作为架构师,却需要选择最合适的,因为我们是在为公司的盈利作出自己的贡献,而不是为实验室作出Fancy的效果,因此自己玩可以用最炫的最新的,而真正考虑做一个项目,开发一个框架,那么需要慎重的选择一种合适的技术规范,利用可以利用的资源,Solve Problem。后续将会把自己前段时间整理的SCA的实践整理一下,毕竟这个让SOA落地的东西到底是否能踏踏实实的干活,还是需要实践来检验的。