系统在单一语言环境中没有问题,但由于各种语言环境的不同,各种系统环境千差万别,存在着明显的界限,有三种跨域生态环境的方式:
1)ORB(Object Request Broker)
不同生态环境的程序可以像调用本地对象一样调用远程对象代理的方法,ORB会负责连接到远程的对象,并处理数据的序列化与反序列化。
例子是:java中的RMI实现。
2)SOA
其核心概念是服务(Service)。比如:我们要提供整数加法Web服务,我们会很自然地想到通过类似下面的url来表达服务接口:
http://www.example.com/add?a=1&b=2
例子是: java开源框架:mule
3)REST
其核心概念是资源(Resource)
在REST的世界中,http://www.example.com/add?a=1&b=2是一个xml网页资源的id,而非服务的接口。
在REST的世界中,资源即状态,而互联网就是一个巨大的状态机:每个网页是其一个状态;url是状态的表述;REST风格的应用则是从一个状态迁移到下一个状态的状态转移过程。早期互联网只有静态页面的时候,通过超链接在静态网页间浏览跳转的page->link->page->link…模式就是一种典型的状态转移过程。
例子是: 查询翻页的概念:
第一页:http://www.google.cn/search?q=%E5%91%A8%E6%9D%B0%E4%BC%A6&hl=zh-CN&newwindow=1&start=0&sa=N
第二页:http://www.google.cn/search?q=%E5%91%A8%E6%9D%B0%E4%BC%A6&hl=zh-CN&newwindow=1&start=10&sa=N