二十世纪九十年代中期以来,业界一直在使用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目前都是开放源代码的中间件。
分享到:
相关推荐
ICE和ACE高效网络编程中间件平台
C++跨平台网络编程 封装底层api,提供统一接口
作为一个高性能的互联网通信平台,ICE包含了很多分层的服务和插件(Plug-ins),并且简单、高效和强大。 ICE当前支持C++、Java、C#、Visual Basic、Python和PHP编程语言,并支持在多种操作系统上运行。
网络与通信引擎和中间件开发的SDK,提供了跨平台,稳定可靠的网络通信引擎。你可以在这套引擎上面快速的部署你的网络应用程序环境。此引擎封装了底层网络IO和网络应用与协议相关接口,你可以使用此SDK开发大型或者中...
ice demo是很好的学习ice的东西,ice是一个很好的分布式的网络通讯中间件,很好的支持跨平台等各种功能。 ice demo是很好的学习ice的东西,ice是一个很好的分布式的网络通讯中间件,很好的支持跨平台等各种功能。 ...
一款优秀的linux平台(rhel5)下的通信中间件
利用ICE通信中间件构建分布式应用程序开发框架
中间件:兵临城下.pdf
介绍分布式网络中间件netty的基本内容,netty的核心原理、核心机制、线程模型、源码等相关的内容。netty中间件是分布式架构的重要基础内容之一。
摘要: XEngine 网络开发包,网络通信引擎,网络通信中间件,网络通信开发框架 下载地址:libXEngine: XEngine 网络通信引擎 XEngine 网络中间件 XEngine 网络通信开发框架 (gitee.com) 当前版本 V7.32.0.1001 注意 你...
血与荣誉网络通信引擎2013PT1-2.4.2.1001 Build1231 集成了LINUX下的 TCP UDP 服务器模型,包括 EPOLL ET LT,SELECT,POLL 还包含了LINUX 系统API 资源API 基础库 算法库 客户端开发包等等,与网络相关的功能集成。 ...
网络通信引擎 集成服务器 客户端 集成了TCP UDP版本 IOCP SELECT WSAEVENTSELET WSAASYNCSELECT OVERLAPPED 模型 还有其他网络帮助函数 UPNP OPENSSL安全传输 加解密函数等等
mycat数据库中间件:概述完整版资料.pptx
ICE分布式中间件开发VS分布式开发之ACE
ZeroC公司的ICE中间件的简单介绍。很好的网络通信中间件。
移动中间件:移动无线Internet的将来.pdf
ICE中间件技术的详细教程,包含ice的开发基础,服务协议等,是初学ICE常用的工具书
项目概述:这是一款基于C++的高性能跨平台数据库连接中间件,源码包含444个文件,主要采用C++语言编写,同时兼容C语言。文件类型包括头文件(287个.h文件),实现文件(94个.cpp文件),C++头文件(19个.hh文件),...
网络通信引擎(Internet Communications Engine, Ice)是由 ZeroC的分布式系统开发专家实 现的一种高性能、面向对象的中间件平台。它号称标准统一,开源,跨平台,跨语言,分布式, 安全,服务透明,负载均衡,面向...
#资源达人分享计划#