ACE和ICE

ICE和ACE高效网络编程中间件平台 立即下载

背景

二十世纪九十年代中期以来,业界一直在使用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的全称是Internet Communications Engine,即因特网通信引擎。ICE是一款高性能的中间件,支持分布式的部署管理,消息中间件,以及网格计算等等。ICE是由ZeroC, Inc.公司开发的。

ACE的全称是ADAPTIVE Communication Environment,即自适应的通信环境。ACE自从问世以来得到了多家公司的商业支持。

ICE和ACE目前都是开放源代码的中间件。不过ICE是双License协议的:GPL和Commercial licenses,可能存在一些商业问题。

ICE的特点

  • 面向对象的语义,所有的操作调用都使用迟后绑定。
  • 支持同步和异步的消息传递,提供了同步和异步的操作调用和分派,提供了发布——订阅消息传递机制。
  • 与硬件架构无关,客户端及服务器与底层的硬件架构屏蔽开来。对于应用代码而言,像字节序和填充这样的问题都隐藏了起来。
  • 与上层的编程语言无关,客户端和服务器可以分别部署,所用语言也可以不同,支持C++、Java语言,客户端支持PHP语言。
  • 与采用的操作系统无关,ICE完全是可移植的,同样的源码能够在Windows、Linux、MacOS和UNIX上编译和运行。
  • 完全是线程化的,其API是线程安全的。
  • 采用TCP、IP 和UDP作为传输协议,客户端和服务器代码都不需要了解底层的传输机制。
  • 服务器的位置是对用户透明的,ICE例程负责定位对象,并管理底层的传输机制,比如打开和关闭连接。客户与服务器之间的交互显得像是无连接的。服务器可以迁移到不同的物理地址,而不会使客户持有的代理失效,而客户完全不知道对象实现是怎样分布在多个服务器进程上的。
  • 采用SSL强加密,可以使客户和服务器完全安全地进行通信。
  • 采用内建的持久机制创建持久的对象。并且提供了对高性能数据库Berkeley DB的内建支持。

ACE的特点

  • ACE提供了一组丰富的可重用C++包装外观(Wrapper Facade)和框架组件,可跨多种平台完成通用的通信软件任务,其中包括:事件多路分离和事件处理器分派、信号处理、服务初始化、进程间通信、共享内存管理、消息路由、分布式服务动态(重)配置、并发执行和同步等等。
  • 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软件。

参考文档

  1. Michi Henning和Mark Spruiell编写的《Distributed Programming with ICE》
  2. Douglas C. Schmidt编写的《C++ Network Programming with Patterns, Frameworks, and ACE》。
深入解析ACE架构设计与实现原理 C++的深入解析ACE架构设计与实现原理的源代码资料 立即下载

相关推荐

ACE和ICE-高效的网络编程中间平台简介[参照].pdf

ACE和ICE-高效的网络编程中间平台简介[参照].pdf

ICE

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

2358

基于STM32的宠物智能照护嵌入式系统设计

嵌入式系统是实现物联网终端设备本地化感知、决策与执行的核心技术载体,其关键在于多传感器融合、低功耗执行控制与轻量级云边协同。本文围绕环境监测(温湿度、烟雾、余粮)、机电执行(步进电机食盘、继电器风扇)和可靠通信(MQTT+ESP8266)三大技术主线,深入解析STM32F103在资源约束下的外设调度策略、ADC采样抗干扰设计、DHT11时序精准控制及HX711称重滤波算法等工程实践要点。系统强调本地闭环优先原则,确保离线基础功能可用,同时通过阿里云IoT平台实现远程监控与告警联动,为中小型智能硬件项目提供可

weixin_29155599的博客 293

ICE vs. ACE

ICE是与CORBA,.NET Remoting,Web Service同层次的东西,ACE是个网络编程库,准确的说是个C++对Socket网络操作的封装。而ICE是个RPC与DO(分布式对象)的协定,与语言没有关系,这一点和CORBA,Web Service,.NET Remoting相同,但ICE更简单。需要注意的是,.NET Remoting只能由.NET支持的语言实现,也是非常棒的RPC解...

weixin_30859423的博客 217

本地部署llama3Chinese

这通常意味着你的构建环境可能不完整或者没有正确配置。通常是由 Visual Studio 的 C++ 工具提供的。(大模型对错误的解析)错误信息表明在尝试构建一个项目时,在 Windows 上,

m0_49343639的博客 1432

如何编写 Skill 实现自动化用例生成

Skill 本质上是一组结构化的指令和工具定义,它告诉 AI 模型在特定场景下应该遵循什么流程、调用哪些工具、输出什么格式的内容。元信息:名称、描述、版本等。指令(Instructions):定义 AI 的行为准则和任务流程。工具(Tools):AI 可以调用的外部能力,如文件读写、代码执行、API 请求等。上下文(Context):预设的输入输出格式或示例。编写一个用于自动生成测试用例的 Skill,核心在于定义清晰的指令流程和输出规范。

Cesare的博客 2692

ICE和ACE高效网络编程中间平台

 自从上世纪九十年代以来,计算工业一直在使用像DCOM 和CORBA这样的面向对象中间件平台。在使分布式计算能为应用开发者所用的进程中,面向对象中间件是十分重要的一步 。开发者第一次拥有了这样的可能:可以构建分布式应用——中间件平台会照管大部分网络杂务,比如整编(marshaling)和解编(unmarshaling)(对数据进行编码与解码,以进行传送)、把逻辑对象地址映射到物理传输端点、根据客户

4799

OCR开发实战:如何用PaddleOCR C++版实现本地文字识别(附模型文件处理技巧)

本文详细介绍了如何使用PaddleOCR C++版实现本地文字识别,包括环境搭建、工程编译、运行时优化等全流程。重点讲解了在VS2019/VS2022环境下配置PaddleOCR的CPU推理性能优化技巧,以及模型文件处理的实际应用方法,帮助开发者高效完成OCR本地化部署。

devops8pract的博客 334

ICE 分布式中间件开发VS 分布式开发之ACE

ICE(Internet Communications Engine)是ZeroC 提供的一款高性能的中间件,基于ICE 可以实现电信级的解决方案。前面我们提到过在设计网站架构的时候可以使用ICE 实现对网站应用的基础对象操作,将基础对象操作和数据库操作封装在这一层,在业务逻辑层以及表现层(java,php,.net,python)进行更丰富的表现与操作,从而实现比较好的架构。基于ICE 的数

记事本 3492

可变形卷积(Deformable Conv)原理解析与torch代码实现

图6为可变形卷积示意图。图1所示为普通卷积在输入特征图上进行卷积计算的过程,卷积核大小为3*3,在输入特征图尺寸为7*7上进行卷积,将卷积核权重与输入特征图对应位置元素相乘并求和得到输出特征图元素,按一定方式滑动窗口就能计算得到整张输出特征图。图6所示,在input feature map上普通卷积操作对应卷积采样区域是一个卷积核大小的正方形(绿框),而可变形卷积对应的卷积采样区域为一些蓝框表示的点,这就是可变形卷积与普通卷积的区别。先来一张图感受一下,图3为标准卷积与可变形卷积的卷积示例。

panghuzhenbang的博客 5万+

大模型量化方法总结

本文主要对大模型量化方法进行了总结,希望对学习大语言模型的同学们有所帮助。 文章目录 1. 前言 2. 模型精度 3. 量化方法 3.1 方法一 3.2 方法二 3.3 方法三

herosunly的博客 1万+

ICE和ACE

跨平台的网络通信中间件:ICE和ACE 我现在做的工作部分是.NET 和Java的通讯。看到这篇文章介绍了ICE和ACE, 两个都是开源的高性能中间件,挺有意思的,ICE的主页ACE的主页二十世纪九十年代中期以来,业界一直在使用DCOM和CORBA这样的面向对象的中间件平台。在分布式的应用中,中间件平台托管了大部分网络事务, 比如对数据进行编码与

董磊的专栏 1405

ArcGIS Pro SDK (二十五)工作流管理器

【代码】ArcGIS Pro SDK (二十五)工作流管理器。

Winemonk 494

跨平台的网络通信中间件:ICE和ACE

做的工作部分是.NET 的通讯。看到这篇文章介绍了ICE和ACE, 两个都是开源的高性能中间件,挺有意思的, ICE的主页 ACE的主页 二 十世纪九十年代中期以来,业界一直在使用DCOM和CORBA这样的面向对象的中间件平台。在分布式的应用中,中间件平台托管了大部分网络事务, 比如对数据进行编码与解码以进行传送,把逻辑对象地址映射到物理传输端点,根据客户和服务器的机器架构改变数据的表示

cutely606的专栏 1380

openHarmony之AI Engine:万字讲解如何在应用、开发板上接入AI大模型调用

本文章介绍如何在 OpenHarmony 开发板上集成和部署各类 AI 大模型,实现终端直接聊天功能,并为语音助手、智能机器人等应用提供 AI 接口支持。

m0_67505153的博客 619

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

平台的网络通信中间件:ICE和ACE

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

lile0223的专栏 1119

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

上一篇: Ogre学习记录(二)-RaySceneQuery
下一篇: Linux系统调用列表
tinyFatAries
博客等级 码龄12年 1粉丝 6原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值