每个人在人生的不同阶段都在成长,父母们为自己记录了过去的成长历程,自己也在成年以后记录着自己的成长历程。程序员或者架构师都有着自己的“孩子”,不论自己的孩子是好是坏,都为自己的孩子有一点成绩而激动不已。现在的我也正在培育着一个自己的“孩子”,虽然在它成长过程中我要付出很多,但是看着它的成长,让我觉得所有的付出都是值得的。因此通过这种方式,记录下它的成长,记录下遇到的种种困难和解决之道,为自己也为其他程序员架构师在培育“孩子”的过程中提供可能有帮助的一些信息。
一.初涉SCA
阿里新子公司成立,我也从业务开发组调动到了平台架构组,平台架构组当时的职责就是完善XPlatform来支持多个业务产品线部门的业务开发,XPlatform是基于MDA理念的快速开发平台。但随着业务部门开发灵活性要求的日益增加,XPlatform在可定制化,模块化就日渐暴露出了不足。在4月份的技术战略调整以后,开始了翻天覆地的XPlatform重构计划,而我就被分配负责考虑底层架构重构以及服务框架的设计。
当时首先考虑模块化重构底层的时候,感觉OSGI是一个很好的方向,因此在重构服务框架前期的Cache模块时候采用了OSGI策略,可以动态替换Cache,但是在使用的过程中发现,此模块化并非我们所需的模块化。OSGI的模块化比较彻底,就连每个Bundle的dependency都是自己维护和管理,这样对于动态载入和卸载提供了坚实的基础,但同时也为它提供了最难处理的一个问题:复杂的ClassLoader机制。而回顾当前的业务开发场景,是否真的有这样强模块隔离的需求,回答往往是否定的。而作为动态的载入和卸载,的确是很好的一种特性,但是作为商业化的产品,特别是现在的互联网应用,机群中部署的应用模块往往来说并不需要单独装载和部署。另一方面来看OSGI面向的主要是对于单机服务开发模块化的解决方案,并非SOA的解决方案,而当前互联网应用在很大程度上需要互联互通,模块化是基础,但是并非最终的解决手段。
这时候开始关注与SCA,对于SOA具体实施的一种实践性的规范,规范本身的模块化可扩展性给我留下了很深的印象。SCA和OSGI在模块化思想上有很多类似的地方,在SCA中Composite就是Bundle虚拟体,而SCA的优点就在于它只是规范,只是一种设计思想,不约束实现语言,平台以及其它细节,这也是互联网应用的一种趋势。信息共享达到信息价值最大化,这是企业应用的目标,在实现这个目标的时候需要抛开实现过程中的细节。就好比程序员往往关注的是使用什么好的技术能够开发出最炫的应用,而老板关注的是如何在最短最快的情况下满足用户需求,两者之间如何能达成双赢,那么就是架构师的职责了。
既然认定了SCA这条路,那么就开始走吧,第一步当然是看规范,OSOA上关于SCA的规范十分详尽。SCA规范虽然已经有些年头了,但是正式纳入OSOA并且成为一个较为广泛认可的规范其实时间并不长,国外Sun,Bea都用一些类似的产品,但也没有大规模推广,而在Apache的孵化项目中Tuscany是SCA最出名的实践开源项目,对于我来说当然是加入开源大家庭。我在接触Tuscany的时候,它还是0.9之前的milestone2,但到现在为止,短短的几个月,已经发布到了v1版本了,可见发展迅速。对于Tuscany的关注,我看见现在国内也越来越多,Tuscany最大的特点就是它的架构可扩展性很强,这也是SCA规范所需要的架构体系,要做到SCA的模块化和扩展性,必须有灵活的基础架构作为支撑。
三下五除二,用Tuscany搭建了SCA规范中描述的几个通用场景,简单的java bean,spring的集成,异步回调,rmi远程调用等等,当然遇到了不少问题,由于Tuscany本身也是孵化过程中,最大的问题就是相应的文档少,作为一个初学者,只能通过Demo了解大致的使用方式,遇到问题也就通过跟踪它的代码来学习,不过这个过程,让我也对整个框架的体系架构有所了解,就如大牛所说,真正的体系架构是一个运行期的概念,而非设计期的,设计期其实就是SCA规范本身,而运行期的部分才是真正的体系架构。
预研终究是在做实验性的工作,是否能够产品化,还需要实践来检验。XPlatform的重构正式启动了,平台架构师们组织了一次内部重构技术方案讨论会,我将前期的研究结果以及SCA的思想和实现都作了展示,同时结合我们重构的目标作了技术实施可行性介绍。与会的另外一个架构师提出了使用Spring实现SOA的ESB模式的解决方案,经过比较和讨论最后我的计划方案得到了肯定,但是我自己心里其实也没有底,毕竟如果真的在XPlatform的体系架构中实施SCA,那么将会波及各个产品线的底层架构,如果后续出现无法修复的问题,那么这个责任可不小。同时在过去的那些年头,EJB就是一个很好的反面例子,一个规范理念是重要的,但是实施环境是否合适也会决定成败,SCA是否适合未来的阿里软件技术方向,当时的我没有把握。最后我主动提出降低风险的设计方案,平台底层分成两部分:基础服务框架(BSF)和应用服务框架(ASF),前者主要应用于XPlatform内部核心组件的插拔交互,后者应用于上层应用的组装,发布,交互。
Alisoft-xplatform-core-service-framework这个就是服务框架项目的子工程目录名,也是我的SCA之路的第一步。当走出这第一步以后,就再也不能回头了,常用老马的一句话来激励自己:我可能不是最聪明的人,也不是最努力的人,但是坚持可能就让我比别人成功。Tuscany为我开启了SCA的实践之路,但Tuscany并不是像看起来那么美,要走适合服务框架的SCA之路,难题才刚刚开始。
分享到:
相关推荐
标题中的“全部的SCA&SDO中文规范”指的是Service Component Architecture (SCA) 和 Service Data Objects (SDO) 的中文版本规范集合。这些技术是IBM提出的用于构建面向服务架构(SOA)应用的关键组件。 1. **...
在"apache-tuscany-sca-1.6.zip"这个压缩包中,包含的是Apache Tuscany SCA 1.6版本的相关文件。这个版本可能包括了以下关键组件和资源: 1. **SCA模型**:SCA的核心是它的模型,它定义了服务、组件、接口、绑定和...
在第一种类型中,本质上是将整个SCA应用视为一个更大应用的一部分,而第二种类型则将提供服务的SCA应用视作另一个SCA应用的客户端。本文提出的模型实现了SCA应用分布性的第一种类型。 7. 实际案例应用 在文章的部分...
它通过内置的五大主要分析引擎:数据流、语义、结构、控制流、配置流等对应用软件的源代码进行静态的分析,分析的过程中与它特有的软件安全漏洞规则集进行全面地匹配、查找,从而将源代码中存在的安全漏洞扫描出来,...
- 它基于Murata的3D-MEMS技术,信号处理在一个混合信号ASIC中完成,并利用灵活的SPI数字接口。 - 传感器元件和ASIC被封装进一个12针的预模塑料外壳中,以保证产品在使用寿命期间的可靠性。 - 该组件被设计、制造...
Axis2是基于 Axis1 的下一代Web服务框架,它提供了更高级别的功能,如服务组件架构(SCA)、服务数据对象(SDO)以及更好的性能和可扩展性。 压缩包子文件的文件名称列表包括 "lib"、"META-INF" 和 "classes",这些...
**SCA_Java通用注解和API规范**是一份重要的文档,它不仅详细介绍了SCA框架的核心概念和技术细节,还为开发者提供了一套完整的工具集来构建和管理基于SOA的应用程序。通过理解和应用其中的注解和API,开发者可以更...
- **SCA(Service Component Architecture)**:服务组件架构是SOA的具体实现方式之一,它为开发基于SOA的应用程序提供了一套完整的规范。SCA不仅简化了开发过程,还将底层技术细节与业务逻辑分离,使开发者能更专注...
基于SCA的分布式Web应用研究是探讨如何在JavaEE平台上构建以SOA为基础,利用SCA的优势来构建分布式Web应用系统。SCA(Service Component Architecture)是实现SOA(面向服务的架构)的一种方式,其核心理念是服务...
在"SCA核心框架CF"中,我们主要关注的是SCA2.2.2版本的实现,这是一个基于C++的实现,旨在为开发者提供一种高效、可靠的平台来构建SOA(Service-Oriented Architecture,面向服务的架构)应用。 在"framework-core-...
**SCA(Service Component Architecture)**,即服务构件架构,是一种用于构建基于服务的应用程序和服务的技术规范。SCA旨在提供一个统一的方法来组合服务,使开发人员能够更加关注业务逻辑而非底层技术细节。这种...
《理解SCA:服务组件架构》是Addison-Wesley在2009年6月出版的一本关于服务组件架构(Service Component Architecture, SCA)的专业书籍。这本书深入浅出地探讨了SCA这一重要的软件架构模式,旨在帮助读者理解和应用...
【uscany-sca-1.2-incubating-updatesite.zip】是一个Eclipse插件的更新站点压缩包,主要用于扩展Eclipse集成开发环境的功能。这个压缩包中的内容是Tuscany Service Component Architecture(SCA)的1.2版本,它是...