不过,今天并不想深入讨论SaaS的利弊得失,而是想从另一个角度来考量SaaS,谈谈SOA对SaaS的影响。在市场宣传中常常会混淆SOA和SaaS,其实此“服务”不是那“服务”,SOA作为一种新的软件架构方式,服务既是划分的软件模块化单元(为了避免混淆,本文将用软件模块来称呼SOA中的服务),也是软件中模块间交互模式——服务供应和消费关系;而SaaS的服务是供应商向终端用户提供的增值产品。SaaS中涉及的软件并不一定要求是面向服务架构的,基本上,SOA和SaaS是两个范畴的概念。回过头来看,面向服务架构的引入对于SaaS带来了不小的冲击。
首先,SOA帮助SaaS提供更多个性化的服务。面向服务架构的软件是通过聚合有标准接口的软件模块产生的,软件模块的交互也以标准协议达成,所以松耦合的软件模块能够容易的被替换。特别是当ISV们针对相同的功能提供各具特色的软件模块,SaaS的供应商能够按照终端用户的偏好或者要求,聚合不同的软件模块,为终端用户提供个性化的服务。比方说,在一个基于SOA的运输路线规划软件中,可以为美国用户使用Google Map提供的软件模块显示地图和卫星图,也能按照中国的用户要求定制,聚合中国本地开发的地图软件模块,更好地提供本土地图细节。这样的软件模块替换,在SOA下更加容易实现,甚至能够低成本的为每个客户定制,而不失SaaS规模化的优势。
其次,SOA推动的软件生产工业化改变着SaaS的生态系统。在软件进入工业化时代中讨论过SOA引起的软件生产工业化变革,这个变革影响着SaaS的生态系统,SaaS从单一供应商的状态逐步过渡到众多供应商分工协作的方式。单一供应商可以举例Intuit,它推出了其成功的会计软件的在线版而伴随SOA,SaaS的增值产品将由众多供应商共同铸造,供应商根据自己的业务优势,大致可以分为如下角色:软件平台供应商,通用应用软件模块供应商,特殊行业应用软件模块供应商,软件模块聚合供应商,软件服务运营供应商。不同的角色为SaaS提供不同的内容,在竞争和协作中产生最符合终端用户要求的产品。