基本概念:
  •服务器/客户端(server/client):这个的定义与一般的定义相同,主动的一方被认为是client .
  •ICE对象:跟OOP中的对象类似,不同之处在于,在分布式的环境中,同一个ICE对象在不同的地址空间中都可能存在着.ICE对象也提供了一组接口(facets).ICE对象还有一个特殊的接口:主接口.
  •代理(proxies):是ICE对象引用,代理是在客户地址空间,客户对ICE对象的操作就是通过代理来进行的.代理封装了完成:ICE对象的寻址(包括服务器的寻址),激活ICE对象,传入参数,等待执行并返回执行结果.
  •servant:在服务器上的执行体,ICE对象对服务器的操作就是通过调用servant.
  •"最多一次"原则:一次对目的的访问,只会执行一次(并不排除出错重试) .

组成部分:
  Slice ICE的规范语言,跟CORBA的IDL(Interface Definition Language)等价的东西,是一种中间语言。Slice建立了客户端和服务器端共同遵守的契约:接口。Slice也用来描述对象持久数据。

  Slice Compilers Slice的规范语言可以映射成多种编程语言。目前ICE支持C++,Java,Python,PHP,C#和VB的语言映射。Ice的客户端和服务器端协同工作,而不会知道分别实现的是何种编程语言。

  Ice Ice的核心库。在众多的特性当中,Ice核心库通过一个高效的协议(包含TCP/UDP层上协议压缩)来管理所有的通信任务,为多线程服务器提供了一个灵活的线程池,并且有特别的功能来支持上百万对象的可扩展性。

  IceUtil 一些常用的功能函数集。例如Unicode处理和多线程编程,是用C++写成。

  IceBox 一个专用于ICE应用的应用服务器。ICEBox可以方便地运行和管理动态加载、共享库或java类的形式Ice的服务。

  IcePack 一个成熟的服务激活和部署工具。IcePack能大大简化在异构网络之间部署应用的复杂性。只要简单的编写XML格式的一个部署描述文件,IcePack就能自动处理剩下的工作。

  Freeze Freeze提供了Ice Servants对象的自动持久性。通过几行代码,一个应用就可以生成一个高度可扩展的逐出器(evictor)来高效地管理持久对象。

  FreezeScript 在大的软件项目里,持久对象的数据类型改变很常见。为了最小化这些变化的影响,FreezeScript提供了相应的工具来检查和移植Freeze生成的数据库。这些工具支持XML格式的配置脚本,易于使用。

  IceSSL 用于Ice核心的动态的SSL传输插件。提供了认证、加密和消息完整性,使用工业标准的SSL协议来实现。

  Glacier 面向对象中间件平台的一个最大的挑战是安全性和防火墙。Glacier是Ice的防火墙解决方案,它大大简化了安全程序的部署。Glacier认证和过滤客户的请求并允许服务器通过安全的方式回调客户端对象。结合IceSSL的使用,Glacier提供了强大的安全解决方案,即安全,又易于配置管理。

  IceStorm 一个支持联盟的消息服务。和大多数的其他消息和事件服务相比,IceStorm支持有类型的事件,这意味着通过联盟广播一个消息和调用一个接口上的一个方法一样容易。

  IcePatch 一个软件修补和分发的服务。为确保运行的软件是最新的版本,要经常更新软件,这是一件乏味的工作。IcePatch自动更新在某个目录层次下的文件。只有需要更新的文件会下作到客户端,为了快速的下载更新,IcePatch使用的高效的压缩算法。

5 个服务:
  Ice为分布式开发提供了技术完善的客户-服务平台。实际上,现实的应用不仅仅只需要具备远程通讯能力,通常的,还需要随需启动服务,把代理分布到客户端,分发异步事件,配置应用,发布补丁等等。

  Ice自带了一些服务,这些服务具备了上面所说的特征和一些其它的特征。这些服务实现以服务器的形式实现并向你的应用提供服务。他们分别是:

  a、IcePack

IcePack是Ice的定位服务。当使用间接绑定时,用来将符号化的适配器名称转换为协议-地址对。除了定位服务之外,IcePack还提供了如下的服务: •IcePack允许你注册一个自动启动的服务:即当客户端进行请求时,服务器不需要处于运行状态,只要第一个客户端进行请求时,服务会自动启动。 •IcePack支持脚本描述部署,可以轻易的配置包含了若干个服务的复杂的应用 •IcePack提供了简单的对象查找服务,允许客户端获取他们感兴趣的对象代理。

  b、IceBox

IceBox是一个简单的应用服务器,它可以协调多个应用组件启动和停止。

应用组件可以用动态链接库的形式发布而不是一个进程。这就减轻了系统的负载。例如,你可以在一个JVM中运行若干个应用组件而不是有多个进程,每一个进程都有自己的JVM。

  c、IceStorm

IceStorm是一个发布-订阅服务,它减除了客户端和服务器的耦合度。本质上说,IceStorm作为一个事件分发的交换机运行。发布者将事件发给服务,IceStorm按照顺序将事件传递给订阅者。使用这种方法,一个事件发布者就可以把一个事件发布给多个订阅者。事件按照主题分类,订阅者可以指定他们感兴趣的主题。只有订阅者感兴趣的主题才会发送给订阅者。服务允许指定服务的质量,从而允许应用在可伸缩性和性能之间进行适当的折中。

如果你需要将信息发布到大量的应用组建,那么IceStorm是一个不错的选择。(一个很典型的例子就是股票报价的应用)。IceStorm减除了信息的发布者和订阅者之间的耦合,同时也能重新发布已经发布的信息。另外,IceStorm可以作为联合服务运行,即多个服务的实例可以运行在不同的机器上,从而降低了CPU的负载。

  d、IcePatch

IcePatch是一个软件补丁服务。它允许你轻松的把软件的更新发布给客户。客户连接到IcePatch然后请求更新一个特定的应用。服务就自动检查客户软件的版本然后下载需要更新的组件。而这些下载的组件都是放在一个压缩包里的,从而减少了带宽的占用。软件补丁也可以通过结合Glacier服务发布,这样可以让只有经过授权的客户才能下载软件更新。

  e、Glacier

Glacier是Ice防火墙服务:它允许客户和服务器通过防火墙安全的通讯。客户-服务器的通讯通过使用公钥认证完全加密,并且通讯是双向的。Glacier提供了相互认证和安全的会话管理支持。

zeroc ice的概念、组成与服务相关推荐

  1. ZeroC Ice 暂记

    摘自: http://weibo.com/p/1001603869896789339575 原文地址: http://www.oschina.net/question/865233_242146 吴治 ...

  2. ZeroC Ice启用SSL通讯的配置

    Zeroc ICE ( Internet Communications Engine )中间件号称标准统一,开源,跨平台,跨语言,分布式,安全,服务透明,负载均衡,面向对象,性能优越,防火墙穿透,通讯 ...

  3. Java构建工具, ZeroC ICE, word2vec

    https://antkillerfarm.github.io/ Java构建工具 构建工具的意义在于,提供一种独立于IDE的软件构建方式.而且通常来说,构建工具更适合特大项目的构建.比如,即使是以功 ...

  4. Zeroc Ice 发布订阅者之demo Icestorm之clock

    刚刚在服务端(192.168.0.113)和客户端跑通(192.168.0.188),在这里记录,作为备忘. 第一步:读readme,先用vs2010生成subscriber.exe和publishe ...

  5. 初识RPC中间件zeroC ICE工具之iceca

    zeroc-icecertutils是什么? zeroc-icecertutils全称zeroc Ice Certificate Utilities,其中包括iceca命令行程序和一个小型Python ...

  6. ZeroC ICE 源码编译

    本实验主要介绍如何在Ubuntu 14.04系统上编译安装ZeroC ICE,首先介绍一下ZeroC ICE. ZeroC ICE是ZeroC公司开发的一套RPC中间件平台,号称标准统一,开源,跨平台 ...

  7. ZeroC Ice权威指南-学习笔记1——hello world

    前言 ZeroC Ice是一款很好的RPC框架,性能极好.但是参考文档不足是其一大问题,这也影响了它的传播.<ZeroC Ice权威指南>是唯一的中文教材,但写的不尽如人意,作为入门教材, ...

  8. ZeroC Ice IceBox使用

    IceBox介绍 IceBox就像一个Tomcat,我们只要写N个Ice服务代码,用一个装配文件定义需要加载的服务列表.服务器的启动参数.启动次序等必要信息,然后启动IceBox,我们的应用系统就能够 ...

  9. Zeroc Ice 学习笔记--IceBox

    Zeroc Ice 学习笔记--IceBox 1.介绍 IceBox就好像是一个Tomcat,只需要服务实现Ice.Server接口并能轻松搞定 2.案例(参考Zeroc Ice 权威指南) ice文 ...

最新文章

  1. LeetCode 215. Kth Largest Element in an Array--数字第K大的元素--最大堆或优先队列--C++,Python解法
  2. 我应该避免在Java Swing中使用set(Preferred | Maximum | Minimum)Size方法吗?
  3. 影响网站各个页面权重高低的因素有哪些?
  4. ubuntu14.0.4下安装pycharm
  5. OpenJudge NOI 1.7 28:单词倒排
  6. html视图查看,视图.html · zhaohaihang/Semantic UI demo - Gitee.com
  7. 百度 图像识别Api logo识别 基于java的Demo
  8. MT6739充电IC集成步骤
  9. int和Integer有什么区别
  10. 显性测试数据全对的WA之uva355(已AC)
  11. 无线路由器显示无服务器,路由器没信号怎么办?三招教你解决问题!
  12. 手把手教你 win10 安装Paddlepaddle-GPU
  13. 伺服阀放大器|通用型电液伺服阀放大器|伺服阀放大器厂家
  14. 【模电实验】【精简版】【验证性实验——两级阻容耦合负反馈放大器实验】
  15. MyEclipse热部署----使用工具 JRebel
  16. 【干货】Python爬虫/文本处理/科学计算/机器学习/数据挖掘兵器谱
  17. 自然语言处理NLP——GSDMM用于短文本聚类
  18. 计算机实习日记第一天
  19. Python面向对象——正方形面积
  20. CAD图纸如何转换成白色背景的SVG图片

热门文章

  1. Seata多微服务互相调用_全局分布式事物使用案例_业务数据库准备---微服务升级_SpringCloud Alibaba工作笔记0059
  2. 内网穿透工作笔记001---UDP通信_内网通信原理_P2P点对点通信原理
  3. STM32工作笔记0026---平时说的电气烧了是什么意思
  4. Linux工作笔记030---Centos7.3启动tomcat 输入startup.sh后提示command not found
  5. SpringColoud学习笔记007---杂七杂八001--@Resource与@Autowired注解的区别
  6. Android学习笔记---HttpClient入门,使用方法,及简介
  7. torch 安装的问题
  8. 用nohup重定向python输出到文件不成功的解决办法
  9. oracle11g 未,Oracle11g链接提示未“在本地计算机注册“OraOLEDB.Oracle”解决方法
  10. 值对于 int32 太大或太小。_失效值处理