二十世纪九十年代中期以来,业界一直在使用DCOM和CORBA这样的面向对象的中间件平台。在分布式的应用中,中间件平台托管了大部分网络事务,比如对数据进行编码与解码以进行传送,把逻辑对象地址映射到物理传输端点,根据客户和服务器的机器架构改变数据的表示,以及按照需要自动启动服务器。

DCOM和CORBA由于自身的缺点,都没有成功占领大部分分布式计算的市场。

DCOM是Microsoft的独家解决方案,在异构网络中,各种机器运行多种操作系统,无法都使用DCOM。
同时DCOM不支持创建大量数目的对象(数十万或数百万),这在很大程度上是它的分布式垃圾收集机带来的开销造成的。

虽然有多家供应商提供CORBA产品,但是没有一家供应商能够为异构网络环境中的所有操作系统环境提供实现。尽管进行了大量标准化工作,不同的CORBA实现之间仍缺乏互操作性,从而不断地造成各种问题;而且,由于供应商常常会自行定义扩展,而CORBA又缺乏针对多线程环境的规范,对于像C或C++这样的语言,源码兼容性从未完全实现过。

在异构网络环境中,让DCOM和CORBA共存不是一件容易的事情。
2002年,Microsoft推出了.NET平台取代了DCOM。
.NET提供了比DCOM更强大的分布式计算支持,但是仍然是Microsoft的独家解决方案。
另一方面,CORBA技术停滞不前,许多供应商离开了市场,CORBA规范中的许多缺陷未能得到及时解决。

在DCOM 和CORBA衰败的同时,分布式计算领域的研发人员对SOAP和Web Services产生了浓厚的兴趣。
SOAP 和Web Services技术一度引发了很大的公众效应,业界发表了许多论文。
但是无论是在网络带宽方面,还是在CPU开销方面,SOAP都会给应用程序留下严重的性能瓶颈。
应用程序可以把各种SOAP 消息拼凑在一起,但这样做极其繁琐而容易出错。
Web Services的标准化进程非常缓慢,多年以来一直停留在技术层面的实现上。
许多专家担心SOAP和Web Services的架构安全性。

在这样的背景下,网络通讯的中间件ICE和ACE诞生了。

ICE的全称是 ICE是一款高性能的中间件,支持分布式的部署管理,消息中间件,以及网格计算等等。

 ICE的优点主要有:

面向对象的语义,所有的操作调用都使用迟后绑定。
支持同步和异步的消息传递,提供了同步和异步的操作调用和分派,提供了发布——订阅消息传递机制。
与硬件架构无关,客户端及服务器与底层的硬件架构屏蔽开来。对于应用代码而言,像字节序和填充这样的问题都隐藏了起来。
与上层的编程语言无关,客户端和服务器可以分别部署,所用语言也可以不同,支持C++、Java语言,客户端支持PHP语言。 
与采用的操作系统无关,ICE完全是可移植的,同样的源码能够在Windows、Linux、MacOS和UNIX上编译和运行。
完全是线程化的,其API是线程安全的。

采用TCP、IP 和UDP作为传输协议,客户端和服务器代码都不需要了解底层的传输机制。
服务器的位置是对用户透明的,ICE例程负责定位对象,并管理底层的传输机制,比如打开和关闭连接。客户与服务器之间的交互显得像是无连接的。服务器可以迁移到不同的物理地址,而不会使客户持有的代理失效,而客户完全不知道对象实现是怎样分布在多个服务器进程上的。
采用SSL强加密,可以使客户和服务器完全安全地进行通信。
采用内建的持久机制创建持久的对象。并且提供了对高性能数据库Berkeley DB的内建支持。

ACE提供了一组丰富的可重用C++包装外观(Wrapper Facade)和框架组件,
可跨多种平台完成通用的通信软件任务,其中包括:
事件多路分离和事件处理器分派、信号处理、服务初始化、进程间通信、
共享内存管理、消息路由、分布式服务动态(重)配置、并发执行和同步等等。
ACE简化了使用进程间通信、事件多路分离、显式动态链接和并发的面向对象的网络应用和服务的开发。

ACE的好处包括:

增强可移植性:在ACE组件的帮助下,很容易在一种OS平台上编写并发网络应用,然后快速地将它们移植到各种其他的OS平台上。
更好的软件质量:ACE使用了许多可提高软件质量的关键设计模式,提供了通信软件灵活性、可扩展性、重用性和模块性。
更高的效率和可预测性:ACE支持广泛的应用服务质量(QoS)需求,包括延迟敏感应用的低响应等待时间、高带宽应用的高性能,以及实时应用的可预测性。

更容易转换到标准的高级中间件:TAO使用了ACE提供的可重用组件和模式,按照CORBA的标准实现,并且为高性能和实时系统作了优化。
ACE包含一个高级的网络编程框架,集成并增强了较低层次的C++包装外观。
该框架支持将并发分布式服务动态配置进应用。

ACE的框架部分包含以下组件:

事件多路分离组件:ACE Reactor(反应器)和Proactor(前摄器)是可扩展的面向对象多路分离器,它们分派应用专有的处理器,以响应多种类型的基于I/O、定时器、信号和同步的事件。
服务初始化组件:ACE Acceptor(接受器)和Connector(连接器)组件分别使主动和被动的初始化任务与初始化一旦完成后通信服务所执行的应用专有的任务去耦合。
服务配置组件:ACE Service Configurator(服务配置器)支持应用的配置,这些应用的服务可在安装时或运行时被动态装配。
分层的流组件:ACE Stream组件简化了像用户级协议栈这样的由分层服务组成的通信软件应用的开发。
ORB适配器组件:通过ORB适配器,ACE可以与单线程和多线程CORBA实现进行无缝集成。
同为网络通信中间件,ICE和ACE的区别在于,前者是对通信对象的封装,
例如如客户端的ICE核心和服务器端的ICE核心的不同,
而后者是对通信本身的封装,例如对套接字的封装,对同步异步通信方式的封装。
后者比前者更加底层,更加抽象。ACE可以认为是通用网络编程框架软件,而ICE则是一个跨平台的RPC软件。

参考文档:

Michi Henning和Mark Spruiell编写的《Distributed Programming with ICE》;
Douglas C. Schmidt编写的《C++ Network Programming with Patterns, Frameworks, and ACE》。

Internet Communications Engine,即因特网通信引擎。
ICE是由ZeroC, Inc.公司开发的。
ACE的全称是ADAPTIVE Communication Environment,即自适应的通信环境。
ACE自从问世以来得到了多家公司的商业支持。
ICE和ACE目前都是开放源代码的中间件。

转载于:https://www.cnblogs.com/ajian005/archive/2012/10/28/2753650.html

跨平台的网络通信中间件:ICE和ACE相关推荐

  1. PHP中间件ICE,ICE的安装配置,ICE常见编译和运行(异常)错误(自测Php版本安装部分,因为php版本跟ice版本不一样失败)

    ICE(Internet Communications Engine)是Zeroc提供的一款高性能的中间件.使用ICE能使得php(或c++,java,python)与java,c++,.net,py ...

  2. PHP中间件--ICE

    ICE(Internet Communications Engine)是Zeroc提供的一款高性能的中间件.使用ICE能使得php(或c++,java,python)与java,c++,.net,py ...

  3. linux环境下安装PHP中间件ICE(二)

    前面我们已经成功安装了ICE(详情请查看:http://blog.php230.com/linux-install-php-middleware-environment-ice-part1.html) ...

  4. 数据计算中间件技术综述

    传统企业大数据架构的问题 上图是大家都很熟悉的基于 Hadoop 体系的开源大数据架构图.在这个架构中,大致可以分成三层.最下一层是数据采集,通常会采用 kafka 或者 Flume 将 web 日志 ...

  5. Web服务(02)——Web服务器中间件

    文章目录 Web服务(02)--Web服务器中间件 前言 一.JAVA中间件 1.Tomcat 2.Weblogic 3.Jboss 4.Webshaere 二.Python中间件 1.wsgi 2. ...

  6. 数据计算中间件技术综述 1

    上图是大家都很熟悉的基于 Hadoop 体系的开源大数据架构图.在这个架构中,大致可以分成三层.最下一层是数据采集,通常会采用 kafka 或者 Flume 将 web 日志通过消息队列传送到存储层或 ...

  7. envoy实现_网络通信与治理,谁更在行?Envoy 和 Nginx 对比 | 本月送书活动来啦

    Nginx 是 Envoy 出现之前网络通信中间件领域非常有代表性的开源系统,功能强大,性能出色,扩展性很强,已经形成了强大的生态,成为 HTTP 流量管理领域事实上的标杆.Envoy 作为后起之秀, ...

  8. C++跨平台技术 - 线程Thread

    跨平台是什么意思呢?先了解一下平台的概念以及平台的差异.我们知道一个VC编译出来的*.exe是不能在Linux运行的,不能运行的原因可以概括为以下几个方面: 1. 文件的结构与格式 可执行程序是按定义 ...

  9. 通信中间件DDS介绍(一)

    一.前言 DDS是分布式实时的网络通信中间件.用于屏蔽操作系统.底层硬件.体系架构的差异性,以帮助应用人员在开发.维护.升级等阶段缩短时间和人力成本,简化应用程序的开发与调度操作等.DDS能在多种传输 ...

最新文章

  1. Mysql数据库主从搭建
  2. 精通python爬虫框架-精通Python爬虫框架Scrapy
  3. 社保,交得越多亏得越多(转)
  4. 会议容易中吗_【留学评估】美国留学后就业真的和想象中的一样容易吗?
  5. C++继承机制(中篇)
  6. apache主机的重定向和多域名绑定
  7. p语言是python吗-Python是纯的面向对象语言吗?
  8. rocketmq 顺序消费_RocketMQ核心概念扫盲
  9. AI从业者谈发展前景:须有效解决产业规模化痛点
  10. java删除文件内容_java 删除文件中的数据
  11. 如何获得SQL Server 2012 MCSA认证
  12. SPSSAU进行方差分析
  13. cad中计算机的快捷键,CAD中一些常用的快捷键用法
  14. 创业公社:亦庄分中心开业 借好创业东风
  15. 零知识证明 Zero Knowledge Proof 以及 Layer2、跨链介绍
  16. Ubunt14.04搭建opengrok环境
  17. 文件夹双击提示找不到应用程序,右键可以打开(已解决)
  18. 大学学java的就业方向_学Java的就业方向有哪些?
  19. 肝完《浏览器基本原理与实践》后,我总结了这 36 点
  20. 本地数仓项目(四)—— 即席查询

热门文章

  1. 问题 C: 判断三角形的性质
  2. agx 安装ros opencv_Ubuntu下安装realsense+melodic+OpenCV
  3. iphone全部机型_iPhone 上新,首次明确支持中国北斗
  4. 对一个三角形三边如何设计测试用例等价类经典应用
  5. 区块链学者Michael Goldstein:比特币可以防止能源浪费
  6. ParaSwap启动Aave V2集成,允许用户在V1和V2版之间进行套利
  7. SAP License:ERP对供应链管理和实施
  8. 记录一次OOM排查经历
  9. [软件]Beyond Compare
  10. Webpack:代码分割