自从上世纪九十年代以来,计算工业一直在使用像DCOM[3] 和
CORBA[4] 这样的面向对象中间件平台。在使分布式计算能为应用开发者
所用的进程中,面向对象中间件是十分重要的一步 。开发者第一次拥有了
这样的可能:不必是一个网络古鲁(guru),就可以构建分布式应用——
中间件平台会照管大部分网络杂务,比如整编(marshaling)和解编
(unmarshaling)(对数据进行编码与解码,以进行传送)、把逻辑对象地址
映射到物理传输端点、根据客户和服务器的原生机器架构改变数据的表
示,以及应需自动启动服务器。
然而,由于一些原因,无论是DCOM 还是CORBA,都未能成功占领大
部分计算市场:
• DCOM 是Microsoft 的独家解决方案,在异种网络中,各种机器会运行多
种操作系统,无法使用DCOM。
• DCOM 不能支持大量对象(数十万或数百万),这在很大程度上是它的
分布式垃圾收集机制带来的开销造成的。
• 尽管有多家供应商提供CORBA 产品,几乎不可能找到一家供应商,能
够为异种网络中的所有环境提供实现。尽管进行了大量标准化工作,不
同的CORBA 实现之间仍缺乏互操作性,从而不断地造成各种问题;而
且,由于供应商常常会自行定义扩展,而CORBA 又缺乏针对多线程环
境的规范,对于像C 或C++ 这样的语言,源码兼容性从未完全实现过。
• DCOM和 CORBA都过于复杂。要熟悉DCOM或CORBA,并进行相应的
设计和编程,是一项需要许多个月来掌握的艰难任务(而要达到专家
水平,需要好几年)
• 在其各自的历史中,性能问题一直在折磨这两种平台。DCOM 只有一种
实现可用,所以不可能购买性能更好的实现。而尽管有多家供应商提供
CORBA 产品,很难找到遵从标准、性能良好的实现——其主要原因是
CORBA 规范自身所带来的复杂性(在许多情况下,其特性都丰富得超
出了需要)
• 在异种环境中,让DCOM 和CORBA 共存从来都不是一件容易的事情:
尽管有供应商提供互操作产品,这两种平台之间的互操作从来都不是无
缝的,而且难以管理,会产生互不相连的技术孤岛。
2002 年, Microsoft .NET 平台[11] 取代了DCOM。但尽管.NET 提供了
比DCOM 更强大的分布式计算支持,它仍然是Microsoft 的独家解决方案,
因而不是异种环境下的选择。另一方面,CORBA 近年来已停滞不前,许多
供应商离开了市场,给消费者留下了不再受到广泛支持的平台;剩下的少
数供应商在进一步标准化方面的兴趣也已衰退,致使CORBA 规范中的许
多缺陷未能得到解决,或是在它们被报告多年之后才得到解决。
在DCOM 和CORBA 衰败的同时,分布式计算社群对SOAP[23] 和web
services[24] 产生了浓厚的兴趣。使用无处不在的WWW 基础设施和HTTP
来开发中间件平台的想法十分迷人——至少在理论上。SOAP 和web
services 曾经允诺要成为Internet 上的分布式计算通用语言。 但尽管引发了
很大的公众效应,发表了许多论文, web services 却没有能兑现其允诺:在
本书撰写的同时,用web services 架构开发的商业系统非常少。其原因是:
• 无论是在网络带宽方面,还是在CPU 开销方面,SOAP 都会给应用造成
严重的性能恶化,以致于该技术无法适用于许多有苛刻性能要求的系
统。
• 尽管SOAP 提供了"on-the-wire" 规范,要开发现实的应用,那仍是不够
的,因为该规范提供的抽象层次太低。应用可以把各种SOAP 消息拼凑
在一起,但这样做极其繁琐而易错。
• 缺乏更高级的抽象促使供应商提供各种应用开发平台,使遵从SOAP 的
应用开发自动化。但是,除了协议一级,这些开发平台完全没有标准
化,不可避免是私有的,所以用一家供应商开发的应用无法与其他供应
商的中间件产品一起使用。
• 关于SOAP 和web services 的架构安全性,有一些严重的担忧[15] 。特别
地,许多专家都表示,他们对该平台缺乏内在的安全性感到担忧。
• DCOM和 CORBA都过于复杂。要熟悉DCOM或CORBA,并进行相应的
设计和编程,是一项需要许多个月来掌握的艰难任务(而要达到专家
水平,需要好几年)
• 在其各自的历史中,性能问题一直在折磨这两种平台。DCOM 只有一种
实现可用,所以不可能购买性能更好的实现。而尽管有多家供应商提供
CORBA 产品,很难找到遵从标准、性能良好的实现——其主要原因是
CORBA 规范自身所带来的复杂性(在许多情况下,其特性都丰富得超
出了需要)
• 在异种环境中,让DCOM 和CORBA 共存从来都不是一件容易的事情:
尽管有供应商提供互操作产品,这两种平台之间的互操作从来都不是无
缝的,而且难以管理,会产生互不相连的技术孤岛。
2002 年, Microsoft .NET 平台[11] 取代了DCOM。但尽管.NET 提供了
比DCOM 更强大的分布式计算支持,它仍然是Microsoft 的独家解决方案,
因而不是异种环境下的选择。另一方面,CORBA 近年来已停滞不前,许多
供应商离开了市场,给消费者留下了不再受到广泛支持的平台;剩下的少
数供应商在进一步标准化方面的兴趣也已衰退,致使CORBA 规范中的许
多缺陷未能得到解决,或是在它们被报告多年之后才得到解决。
在DCOM 和CORBA 衰败的同时,分布式计算社群对SOAP[23] 和web
services[24] 产生了浓厚的兴趣。使用无处不在的WWW 基础设施和HTTP
来开发中间件平台的想法十分迷人——至少在理论上。SOAP 和web
services 曾经允诺要成为Internet 上的分布式计算通用语言。 但尽管引发了
很大的公众效应,发表了许多论文, web services 却没有能兑现其允诺:在
本书撰写的同时,用web services 架构开发的商业系统非常少。其原因是:
• 无论是在网络带宽方面,还是在CPU 开销方面,SOAP 都会给应用造成
严重的性能恶化,以致于该技术无法适用于许多有苛刻性能要求的系
统。
• 尽管SOAP 提供了"on-the-wire" 规范,要开发现实的应用,那仍是不够
的,因为该规范提供的抽象层次太低。应用可以把各种SOAP 消息拼凑
在一起,但这样做极其繁琐而易错。
• 缺乏更高级的抽象促使供应商提供各种应用开发平台,使遵从SOAP 的
应用开发自动化。但是,除了协议一级,这些开发平台完全没有标准
化,不可避免是私有的,所以用一家供应商开发的应用无法与其他供应
商的中间件产品一起使用。
• 关于SOAP 和web services 的架构安全性,有一些严重的担忧[15] 。特别
地,许多专家都表示,他们对该平台缺乏内在的安全性感到担忧。
Internet Communications Engine (Ice)
针对这些使人不快的选择,ZeroC, Inc. 决定开发Internet Communications
Engine,简称Ice1。其主要设计目标是:
• 提供适用于异种环境的面向对象中间件平台。
• 提供一组完整的特性,支持广泛的领域中的实际的分布式应用的开发。
• 避免不必要的复杂性,使平台更易于学习和使用。
• 提供一种在网络带宽、内存使用和CPU 开销方面都很高效的实现。
• 提供一种具有内建安全性的实现,使它适用于不安全的公共网络。
更简单地说, Ice 的设计目标可陈述为:“让我们构建与CORBA 一样强
大的中间件平台,而又不去犯CORBA 所犯下的任何错误”
CORBA[4] 这样的面向对象中间件平台。在使分布式计算能为应用开发者
所用的进程中,面向对象中间件是十分重要的一步 。开发者第一次拥有了
这样的可能:不必是一个网络古鲁(guru),就可以构建分布式应用——
中间件平台会照管大部分网络杂务,比如整编(marshaling)和解编
(unmarshaling)(对数据进行编码与解码,以进行传送)、把逻辑对象地址
映射到物理传输端点、根据客户和服务器的原生机器架构改变数据的表
示,以及应需自动启动服务器。
然而,由于一些原因,无论是DCOM 还是CORBA,都未能成功占领大
部分计算市场:
• DCOM 是Microsoft 的独家解决方案,在异种网络中,各种机器会运行多
种操作系统,无法使用DCOM。
• DCOM 不能支持大量对象(数十万或数百万),这在很大程度上是它的
分布式垃圾收集机制带来的开销造成的。
• 尽管有多家供应商提供CORBA 产品,几乎不可能找到一家供应商,能
够为异种网络中的所有环境提供实现。尽管进行了大量标准化工作,不
同的CORBA 实现之间仍缺乏互操作性,从而不断地造成各种问题;而
且,由于供应商常常会自行定义扩展,而CORBA 又缺乏针对多线程环
境的规范,对于像C 或C++ 这样的语言,源码兼容性从未完全实现过。
• DCOM和 CORBA都过于复杂。要熟悉DCOM或CORBA,并进行相应的
设计和编程,是一项需要许多个月来掌握的艰难任务(而要达到专家
水平,需要好几年)
• 在其各自的历史中,性能问题一直在折磨这两种平台。DCOM 只有一种
实现可用,所以不可能购买性能更好的实现。而尽管有多家供应商提供
CORBA 产品,很难找到遵从标准、性能良好的实现——其主要原因是
CORBA 规范自身所带来的复杂性(在许多情况下,其特性都丰富得超
出了需要)
• 在异种环境中,让DCOM 和CORBA 共存从来都不是一件容易的事情:
尽管有供应商提供互操作产品,这两种平台之间的互操作从来都不是无
缝的,而且难以管理,会产生互不相连的技术孤岛。
2002 年, Microsoft .NET 平台[11] 取代了DCOM。但尽管.NET 提供了
比DCOM 更强大的分布式计算支持,它仍然是Microsoft 的独家解决方案,
因而不是异种环境下的选择。另一方面,CORBA 近年来已停滞不前,许多
供应商离开了市场,给消费者留下了不再受到广泛支持的平台;剩下的少
数供应商在进一步标准化方面的兴趣也已衰退,致使CORBA 规范中的许
多缺陷未能得到解决,或是在它们被报告多年之后才得到解决。
在DCOM 和CORBA 衰败的同时,分布式计算社群对SOAP[23] 和web
services[24] 产生了浓厚的兴趣。使用无处不在的WWW 基础设施和HTTP
来开发中间件平台的想法十分迷人——至少在理论上。SOAP 和web
services 曾经允诺要成为Internet 上的分布式计算通用语言。 但尽管引发了
很大的公众效应,发表了许多论文, web services 却没有能兑现其允诺:在
本书撰写的同时,用web services 架构开发的商业系统非常少。其原因是:
• 无论是在网络带宽方面,还是在CPU 开销方面,SOAP 都会给应用造成
严重的性能恶化,以致于该技术无法适用于许多有苛刻性能要求的系
统。
• 尽管SOAP 提供了"on-the-wire" 规范,要开发现实的应用,那仍是不够
的,因为该规范提供的抽象层次太低。应用可以把各种SOAP 消息拼凑
在一起,但这样做极其繁琐而易错。
• 缺乏更高级的抽象促使供应商提供各种应用开发平台,使遵从SOAP 的
应用开发自动化。但是,除了协议一级,这些开发平台完全没有标准
化,不可避免是私有的,所以用一家供应商开发的应用无法与其他供应
商的中间件产品一起使用。
• 关于SOAP 和web services 的架构安全性,有一些严重的担忧[15] 。特别
地,许多专家都表示,他们对该平台缺乏内在的安全性感到担忧。
• DCOM和 CORBA都过于复杂。要熟悉DCOM或CORBA,并进行相应的
设计和编程,是一项需要许多个月来掌握的艰难任务(而要达到专家
水平,需要好几年)
• 在其各自的历史中,性能问题一直在折磨这两种平台。DCOM 只有一种
实现可用,所以不可能购买性能更好的实现。而尽管有多家供应商提供
CORBA 产品,很难找到遵从标准、性能良好的实现——其主要原因是
CORBA 规范自身所带来的复杂性(在许多情况下,其特性都丰富得超
出了需要)
• 在异种环境中,让DCOM 和CORBA 共存从来都不是一件容易的事情:
尽管有供应商提供互操作产品,这两种平台之间的互操作从来都不是无
缝的,而且难以管理,会产生互不相连的技术孤岛。
2002 年, Microsoft .NET 平台[11] 取代了DCOM。但尽管.NET 提供了
比DCOM 更强大的分布式计算支持,它仍然是Microsoft 的独家解决方案,
因而不是异种环境下的选择。另一方面,CORBA 近年来已停滞不前,许多
供应商离开了市场,给消费者留下了不再受到广泛支持的平台;剩下的少
数供应商在进一步标准化方面的兴趣也已衰退,致使CORBA 规范中的许
多缺陷未能得到解决,或是在它们被报告多年之后才得到解决。
在DCOM 和CORBA 衰败的同时,分布式计算社群对SOAP[23] 和web
services[24] 产生了浓厚的兴趣。使用无处不在的WWW 基础设施和HTTP
来开发中间件平台的想法十分迷人——至少在理论上。SOAP 和web
services 曾经允诺要成为Internet 上的分布式计算通用语言。 但尽管引发了
很大的公众效应,发表了许多论文, web services 却没有能兑现其允诺:在
本书撰写的同时,用web services 架构开发的商业系统非常少。其原因是:
• 无论是在网络带宽方面,还是在CPU 开销方面,SOAP 都会给应用造成
严重的性能恶化,以致于该技术无法适用于许多有苛刻性能要求的系
统。
• 尽管SOAP 提供了"on-the-wire" 规范,要开发现实的应用,那仍是不够
的,因为该规范提供的抽象层次太低。应用可以把各种SOAP 消息拼凑
在一起,但这样做极其繁琐而易错。
• 缺乏更高级的抽象促使供应商提供各种应用开发平台,使遵从SOAP 的
应用开发自动化。但是,除了协议一级,这些开发平台完全没有标准
化,不可避免是私有的,所以用一家供应商开发的应用无法与其他供应
商的中间件产品一起使用。
• 关于SOAP 和web services 的架构安全性,有一些严重的担忧[15] 。特别
地,许多专家都表示,他们对该平台缺乏内在的安全性感到担忧。
Internet Communications Engine (Ice)
针对这些使人不快的选择,ZeroC, Inc. 决定开发Internet Communications
Engine,简称Ice1。其主要设计目标是:
• 提供适用于异种环境的面向对象中间件平台。
• 提供一组完整的特性,支持广泛的领域中的实际的分布式应用的开发。
• 避免不必要的复杂性,使平台更易于学习和使用。
• 提供一种在网络带宽、内存使用和CPU 开销方面都很高效的实现。
• 提供一种具有内建安全性的实现,使它适用于不安全的公共网络。
更简单地说, Ice 的设计目标可陈述为:“让我们构建与CORBA 一样强
大的中间件平台,而又不去犯CORBA 所犯下的任何错误”