摘要
一个Web接口,不同的服务提供商实现。
最近学习SCA,有一些不同的体会和想法。SCA(Service Component Architecture)面向服务的组件架构,简单说,就是你写的一个 POJO java类,无需做修改, 通过 SCA 的配置就能以不同的协议发布为服务,例如RMI,Web Service,JSON 等等。的确是一个很好的思想。SCA强调 接口 和 实现连个概念。本地访问是 Java Interface, 分布式访问是 WSDL 接口或其他。
[img]/upload/attachment/50573/c5affdd3-cb37-3e5d-a141-306199ddc51d.jpg" alt="[/img]
由此想到 Web Service。一般Web Service是以 WSDL文件对外发布接口,然而,WSDL发布的实际是一个既定的实现。比如说,你从广发得到的明日股票推荐接口是广发的,你从西南证券的明日股票推荐接口是西南证券的。
假定广发的接口是: getGoodStock(1,5) //1 表示明天,5表示5个
假定西南证券的接口是:recommendStocks("2008-11-15") //时间是明天
而某一天我觉得西南证券的推荐不准,想换广发的,就可能要重新编码,因为他们的 WSDL不同,可能是portType不同,param格式不同等,返回数据格式不同等。
今年热炒的 云计算(Cloud Computing),和 SaaS,技术上看都是通过互联网进行服务访问。而从商业应用层面看,“推荐股票”这种可替换式应用,应该是将来的其中一种模式,就是根据需要选择不同Web服务提供商(Web Service Provider)提供的服务。与Java Interface - Java Impl 模式类似,不妨提出一个 Web Interface的概念。
Web Interface:为一个功能的网络服务(NetWork Service)定义的一个统一接口格式和规范,基于它,不同提供商(Provider)可以提供自己不同的实现;服务订阅者可以根据自己需要,选择不同提供商提供的服务。
这里是 “网络服务”,而不是 Web服务,因为它可能不止采用SOAP协议。
统一接口格式和规范包括:Interface Name, input Parameter, output Parameter等, 其中“统一”也包括数据格式统一,可以采用SDO思想等。
在这个定义下, 可以形成一个商业模式: 客户(Customer)通过支付费用来购买服务(Service), 例如按次收费,调用一次 5分钱; 或者按流量收费:1M 3块钱等。由于各家服务提供商采用相同的服务接口格式和规范,客户选择谁提供的服务,取决于服务的质量(Quality),和 客户自己的喜好。
此类网络服务通常应该是能够在互联网公开的服务,比如:搜索结果(Search Result),商品目录查询(Catalog Query),股票推荐(Stock Recommendation),天气预报(Weather Forecast)等。 这类业务的特点就是 客户面对的接口统一,而服务提供商可替换。
回到文章开头,为什么Web Interface的想法是由SCA引起的,可能是类似意识流的东西。其实它们也是有关系的,
SCA是向外发散 1-N, 一个实现,多个接口;
而Web Interface是向内发散 N-1 ,一个接口,多个实现;有点类似聚集(Aggregation)
[img]/upload/attachment/50575/20bff598-7438-3a45-96d6-1c45a22c7a5b.jpg" alt="[/img]