今天晚上起来协助别人处理故障,无聊得很,顺别看看Ice与Corba的争议:
1、自己早在《The Rise and Fall of CORBA》刚刚发表时就看到了这篇文章:
当时觉得是深有感触,非常赞同。
2、不过今天无意中又搜索了一些来自于CORBA阵营的观点:
这些观点都很精彩,自己很难说谁对谁错了。
还记得Michi Henning去年因为发表了一篇Ice与其他中间件平台的性能评测文章弄得硝烟四起(可惜现在ZeroC已经去掉了相关的链接),想不到今年又导致了类似的战争。
不过,从CORBA阵营的激烈反应来看,也从侧面印证了Ice的确是具有颠覆性的一项技术。不然,CORBA阵营是不会那么在意的:)
http://blog.chinaunix.net/u/23216/showart_163708.html
首先声明,我们既不想引起一场"CORBA vs Ice"的争论,也不想怀疑CORBA。相反,我们认为CORBA在它的时代是一个很大的成就,而且,Ice也明显借用了CORBA的很多思想。
我们决定写这篇比较文章是因为我们期望更多的人能正确地询问我们为何他们要用Ice代替CORBA。对这个问题,我们通常的回答是:为什么不先自己试试使用 Ice呢?我们敢肯定,一旦你使用了Ice有一段时间,你就永远不会再想用回CORBA。请相信我们,很容易会喜欢上Ice,因为它优雅、简单,它的结构一致性,而且最后一点:至少它没有大量的特性和工具。
对于没有时间去试验Ice来了解它的人,这里有一些原因让我们相信Ice优于CORBA:
1、Completeness(完备性)
当我们说到完备性时,我们的意思是实际产品的完备性,而不是从来未被实现的标准的完备性。我们相信Ice比市场上任何单个CORBA更完备。你可以自己做一个检查:市场上有哪个CORBA产品提供了跟Ice可比较的特性?
2、Performance(性能)
由于具有CORBA所没有的结构优点,Ice具有突出的性能。Ice高效的协议、请求批量化、高效的事件分发都意味着Ice比CORBA ORB运行得更快,同时消耗更少的线路带宽。
3、No "Design by Committee"(非“委员会设计”)
Ice由一群专业的资深专家所设计。Ice没有设计成适合所有人的“万金油”。而CORBA则充斥着被具有特权的制定者加进到标准里的众多不切实际的特性,却又没有真正考虑到这些特性是否会被真正地实现。
通常,为了就CORBA标准达成一致的唯一方法就是将之前大量实现的特性放在一起,生硬地塞进标准里。这导致了标准越来越大,也越来越复杂,超出了实际的需要。这也意味着平台更大更慢,也因为复杂的API导致了难以使用。Ice提供的API集小得多,也更高效,比CORBA的API易于学习使用,并且功能并不少。
4、Slice
Slice,Ice的规范定义语言,比CORBA IDL更小、更简洁、更强大。Slice具有更少的语言结构,但却更灵活。例如,一个内建的字典类型提供直接快速访问数据结构,异常的继承允许更清晰地影射到支持异常处理的语言。同时,Slice抛弃了CORBA IDL不需要的复杂性,例如属性,inout参数,上下文和传值对象(Objects-by-Value)的复杂性。
5、Language Mappings(语言影射)
Ice支持到C++、Java、Python、PHP、C#和Visual Basic的语言影射。我们知道任何一个CORBA实现提供商都没有提供那么多的语言影射选择。
实际上大多数的CORBA提供商只提供C++和Java的影射,如果你想使用其它语言影射,你就要切换到不同的提供商的产品或使用没有实验支持的CORBA实现。
6、Persistence(持久性)
Slice并不单单是一个接口定义语言。它也可以用来描述Ice对象进行持久的属性,使得很容易写出支持对象持久的服务器端程序。
7、Metadata(元数据)
Slice支持可扩展的元数据设施,它允许Slice为实现应用程序相关的某些目的而使用元数据的标记。例如元数据可以用于定制不同于标准Java影射方式的影射来满足某些特定程序的要求。
8、No any Type(没有any数据类型)
Ice 没有CORBA里Any类型的等价数据类型。这对于CORBA用户来说可能感到很惊讶,因为Any数据类型在CORBA标准里被广泛地使用。但是,Any 数据类型是多余的:程序语言象Java和C++并没有Any数据类型,而且Any数据类型对分布式系统来说也不是属于一个良好的设计。Any数据类型通常用在两种情况下:一种是需要在系统的中介部分对接收到的数据直接进行传递,而不用关心数据的真实类型,例如CORBA的Event服务,另一种是用来作为 union(联合结构体)的一个等价物。
Ice可以通过发送和接收"blobs"的请求来满足第一种情况,Slice的类继承可以满足第二种情况。任何一种情况,Ice的程序都更高效,更加具有类型安全,更加容易设计和实现,而不会遇到使用CORBA Any数据类型时所具有的复杂性。
9、Ice Core(Ice的核心)
虽着时间的演化,CORBA的核心变得异常的复杂。一个初级的例子要在POA(CORBA的对象适配器)里面正确使用都需要很专业的知识,即使你只想支持一小部分的技术特性。Ice的对象适配器,在另一方面来说,更加简单、直观、也跟POA一样的功能强大:定义良好的API使得比POA开发一个可扩展的程序项目需要更少的工作。
10、Ice Protocol(Ice协议)
IIOP是CORBA的弱点之一,具有太多的设计缺陷。例如,没有缺少请求的封装来防止消息的分发。低效的对齐规则导致了多余的数据拷贝。数据的编码规则复杂,却没有带来相应的性能的提高,对象引用的编码异常复杂,妨碍了有效的的编码和在内存共享的执行。代码集的协商是在标准下达成,会遭遇到很多冲突。所有这些复杂性意味着IIOP很难实现,带来了互操作性和性能上的问题。Ice的协议是简单并且更加有效,它提供了一些IIOP没有提供的特性,例如数据压缩和批请求批量化。
11、Security(安全性)
安全性是CORBA的最大的一个难题。OMG已经通过了多个标准,但很多都没有被广泛地实现,CORBA的客户依然没有一个可工作的安全的ORBs。当设计 Ice时,和CORBA相比,安全性被认为是基本的特性。这就是Ice提供一个真正能运作的SSL实现的安全的防火墙的原因。
12、C++ Mapping(C++映射)
用 C++来使用CORBA非常困难。即使你是很有经验的C++开发者。CORBA的C++映射在内存管理和异常安全方面有很多的陷阱和缺陷。相较之下,Ice的C++映射非常简单和直观。它不会有因为错误而导致内存的泄漏。要记住的映射规则的数目比CORBA的C++映射少得多,而且Ice的C++ 映射是基于工业标准的STL。
14、Scalability(可伸缩性)
当你是一个专家时,CORBA是一种可伸缩性很好的技术。但采用Ice,任何人都可以写出高可伸缩性的应用。例如,Ice实现了一个持久化的逐出器,你可以使用它来很容易地处理上百万的对象,你所做的仅仅是在 Slice的定义里指定对象的数据,剩下的工作Ice一手包办:Ice运行库使用高速的数据库来自动加载和保存对象。
15、Versioning(版本化)
CORBA没有任何机制来支持对象状态的版本化。Freeze是Ice的持久服务,它允许持久数据在Slice的定义中改变时,很容易地进行数据库的移植。
16、Software Updates(软件更新)
IcePatch是一个允许你更行客户端软件的工具。它使用压缩来提高数据的传输,并使用校验值来保证一致性。CORBA完全没有提供一个在分布式环境来进行软件更新的机制。
17、Typed Event Service(类型化的事件服务)
CORBA有一个标准来提供类型化的事件服务,但很少甚至没有被实现。类型化的事件服务也有很多已知的问题,事实上它在真正环境的部署是不可用的。Ice从一开始就提供了类型化事件的服务。IceStorm是一个高效、类型化事件服务的实现,它支持事件联盟。
18、Facets(多接口)
CORBA支持继承,DCOM支持聚合。在过去,有很多关于那一种是更好的方法的争论。Ice以接口继承加上以多接口形式的聚合来同时支持这两种方式。Facets允许你在运行的时候用动态的聚合来扩展类型来替代静态的继承。
19、Asynchronous Messages(异步消息)
CORBA 支持异步消息调用(AMI),但很少CORBA产品实现了AMI。Ice一开始就以简单和有效的方式支持AMI。Ice也支持异步消息分发(AMD),这是CORBA里完全没有的东西。AMD等价于客户端的AMI,不过AMD是用在服务器端的。使用AMI,你可以发送了一个请求,然后在以后的一个事件收到服务器的结果时调用一个回调函数来处理返回的结果。而使用AMD,你可以将分发线程归还给Ice,并在结果已经准备好发送到客户端时再次调用分发线程。 AMI和AMD都能被连接起来,这允许你只消耗很少的资源就能构建高效的路由程序。
AMI和AMD对客户端和服务器端来说都是透明的。也就是,一个服务器程序不知道一个请求是否通过AMI调用发出的还是同步地调用发出的,客户端程序也不知道一个操作的调用在服务器端是通过AMD分发处理的还是同步地处理的。当需要使用AMI和AMD时,不用修改Slice。
http://hgggg18.blog.163.com/blog/static/3673064120098711417863/
分享到:
相关推荐
总结来说,ICE是一种强大的分布式计算框架,具有与CORBA类似的接口规范,但更易于开发和使用。通过学习提供的资源,如Ice.ppt和www.pudn.com.txt,开发者可以掌握ICE的基础知识,了解其工作原理,并能将其应用于实际...
ICE网络编程 介绍ICE中间件,远程过程调用RPC,适用于C++ Java等各种语言
此外,还通过与CORBA的对比,进一步阐述了ICE的特点。随后,文档通过一个简单的HelloWorld应用示例,展示了如何编写Slice定义,并通过C++和Java编写ICE应用程序。 _slice语言_是ICE的核心部分,文档详细介绍了Slice...
...基于TA11O(The ACE ORB)的CORBA编程.docx
# Java分布式对象简介:使用RMI与CORBA ## 课程概述 本课程旨在介绍如何使用Java Remote Method Invocation (RMI) 和 Common Object Request Broker Architecture (CORBA) 进行分布式对象编程。对于希望深入了解...
Java CORBA,全称为Java Common Object Request Broker Architecture(Java通用对象请求代理架构),是一种用于分布式计算的技术,允许不同网络上的对象或服务之间进行交互。它实现了对象请求代理(ORB)的概念,...
CORBA(Common Object Request Broker Architecture,公共对象请求代理体系结构)是用于分布式计算的一种标准,它允许不同系统间的软件对象进行交互,就像它们在同一个进程内一样。在C++环境中进行CORBA开发可以帮助...
CORBA公共对象请求代理结构 CORBA(Common Object Request Broker Architecture)是一种基于对象的分布式计算架构,旨在提供一种通用的、平台独立的、语言独立的对象请求代理机制。CORBA的主要思想是采用标准的接口...
与此同时,OMG还成立了Analysis and Design Task Force (ADTF),旨在制定支持软件分析和设计的规范。这些规范覆盖了从设计到运行时的整个生命周期,为企业提供了单一连贯的架构框架,使其能够构建大型复杂应用。 ##...
UCS Ultra Corba Simulator 中文使用说明书 UCS Ultra Corba Simulator 是一个模拟器工具,旨在帮助用户快速学习和掌握 Corba 技术。下面是对 UCS 用户手册的详细解释和知识点总结: 项目背景 UCS Ultra Corba ...
但 是, 对 于 必 须 服 务 于 大 量 用 户 的应 用, 我 们 认 为 应 该 首 选CORBA, 因 为 它 具 有 可 扩 展 性 和 业 界 广泛 的 支 持。 由于CORBA 的 强 健 性 可 以 提 高Java 编 程 语 言 的 性 能, 利 ...
CORBA(Common Object Request Broker Architecture,公共对象请求代理体系结构)是一种标准的中间件技术,它允许不同系统上的软件对象相互通信,就像它们在同一个进程中一样。这种跨平台、跨语言的通信能力使得...
** Ultra Corba Simulator 1.3.6:深入理解与应用** Ultra Corba Simulator是一款针对Corba技术的专业模拟工具,版本为1.3.6。Corba,全称为Common Object Request Broker Architecture(通用对象请求代理架构),...
【标题】:CORBA程序源代码 【描述】:这些源代码示例涵盖了多个使用CORBA(Common Object Request Broker Architecture)技术的程序,包括Java RMI(Remote Method Invocation)、Inprocess通信、简单的HELLO世界...
### CORBA原理及应用知识点详解 #### 一、CORBA简介 - **CORBA**(Common Object Request Broker Architecture,通用对象请求代理体系结构)是一种分布式计算标准,旨在提供跨网络和平台之间的对象交互能力。 - **...
- Slice语言:ICE中间件平台定义了一种特殊的接口描述语言(IDL),名为Slice(Simple Language for Interface and Class Definitions)。这部分内容强调了Slice语言的各个方面,包括编译、词法规则、基本类型、用户...
IIOP.NET allows a seamless interoperation between .NET, CORBA and J2EE distributed objects. This is done by incorporating CORBA/IIOP support into .NET, leveraging the remoting framework.
develop the Internet Communications Engine, or Ice for short. 1 The main design goals of Ice are: ? Provide an object-oriented middleware platform suitable for use in heteroge- neous environments. ?...
《Common Object Request Broker: Architecture and Specification》修订版:1995年7月,更新:1996年7月,修订2.1:1997年8月,修订2.2:1998年2月,修订2.3:1999年6月,小修订2.3.1:1999年10月。这份文档由BEA ...
### CORBA技术详解 #### 一、CORBA技术概述 CORBA(Common Object Request Broker Architecture,通用对象请求代理体系)是一种分布式计算环境下的标准技术框架,由OMG(Object Management Group,对象管理组织)...