概念
简单地说,广义的服务组合就是通过组合形成更大规模的服务。举一个狭义点的例子,如银行转账服务和第三方支付服务的绑定,就能让用户在第三方支付账户余额不足时自动从银行卡取钱完成支付,整个过程很连贯,就好像支付账户余额充足一样。
web服务用的多,所以web服务组合自然是服务组合的常见场景。包括同类服务的组合,不同功能的组合,服务的架构也演进到今天的微服务架构。
例子
假设股票行业存在以下6个基础服务:
•
Country()
输入参数:国家编码。输出项:国家名称和其他信息。
•
YellowPages()
输入参数:公司名称;输出项:企业代码,所在国家等其他信息。
•
NewYorkStock()
输入参数:公司代码,时间;输出项:该公司在纽约的股票价格
(美元)。
•
LondonStock()
输入参数:公司代码,时间;输出项:该公司在伦敦的股票价格。
•
USToRMB()
输入参数:美元价格,时间;输出项:对应的人民币价格。
•
UKToRMB()
输入参数:英镑价格,时间;输出项:对应的人民币价格。
用户想通过“跨国公司名称”和“时间”找出该跨国公司在纽约的股票折合成人民币的价格以及该公司所在国家的信息。
分析:
输入参数:跨国公司的名称、时间
如何实现对给定服务的组合,找出满足用户的信息?
实现
这些服务通过调用关系实现最终的功能,就像函数调用一样,只是返回数据要在互联网上传来传去的,即“函数都是异地调用的”。
后记
其实,早在几十年前,异地过程调用就有了。到现在了,技术的本质没什么进步。