PHPICE初识

ICE:Internet Communications Engine
如出一辙栽适用于异种环境的面向对象中间件平台
他吧我们提供了除DCOM,CORBA,JAVA RMI,.NET Remoting, Web Service,SOAP
RPC以外的同等种远程调用方式。
再要的凡ICE是千篇一律种超操作系统跨语言的远距离调用方式(支持.NET1.1
MONO1.0)。

主页在:http://www.zeroc.com/index.html

下摘录几截ICE1.3文档中的话:
Ice 是同样种植面向对象的中级件平台。从根本上说,这象征Ice 为构建面
通往目标的客户-服务器应用提供了工具、API 和货栈支持。Ice 应用可在异
种植环境受到采用:客户与服务器可以为此不同的编程语言编写,可以运作于不
及的操作系统及机具架构上,并且可以动用多网技术拓展通信。无论
布置环境怎么,这些用之源码都是只是移栽的

Ice 对象(Ice Objects)
Ice 对象是一律栽概念性的实体(或称抽象)。Ice 对象拥有以下特点:
• Ice 对象是当地或远地的地点空间被、能响应客户要的实业。
• 一个Ice 对象只是每当单个或多个服务器被实例化(后者是冗余方式)。如果
某对象又有多独实例,它以是一个Ice 对象。
• 每个Ice对象都出一个要么多独接口。 一个接口是一个对象所支撑之同等密密麻麻
产生号的操作。客户通过调用操作来发出请求。
• 一个操作有零个或再次多参数,以及一个归值。参数与归值具有强烈
的类别。参数是发号的,并且发生倾向:in 参数由客户初始化,并传为
服务器; out 参数由服务器初始化,并传被客户(返回值就是同等栽才
殊的out 参数)。
• 一个Ice 对象拥有一个特有之接口,称为它的主接口。此外, Ice 对象还
可提供零个或又多外接口,称为facets (面)。客户可以在某个对
形态的各个facets 之间展开抉择,选出它们想只要运用的接口。
• 每个Ice 对象都发一个唯一的对象标识(object identity)。对象标识是为此
让把一个靶以及其余兼具目标分别开来的标识值。Ice 对象模型如果对
形状标识是全局唯一的,也就是说,在一个Ice 通信域中,不见面产生少数独针对
造型具有相同之对象标识。
在实践中,你无需要用像UUID[14] 这样的全局唯一的对象标识,
倘你用的标识和您感兴趣之地域中的其余任何标识不相互冲突,就好
了。但每当架设上,使用全局唯一的标识符能带来有利,我们拿当
XREF 中对斯加以探究。

代理(Proxies)
设若想与某个Ice 对象关联,客户必须具备这个目标的代理1。 代理是客户
的地点空间受到之一致种产品(artifact);对客户而言,代理就是Ice 对象的
代表(该目标可能于远地)。一个代理充当的凡一个Ice 对象的地方大使:
当客户调用代理及之操作时, Ice run time 会:

  1. 定位Ice 对象
  2. 要Ice 对象的服务器并未运行,就激活它
  3. 每当服务器遭到激活Ice 对象
  4. 将拥有in 参数传送给Ice 对象
  5. 伺机操作完
  6. 把所有out 参数与返回值返回给客户(或当发生错误的景况下抛出异
    常)
    代办封装了形成这无异于系列步骤所必备的凡事音。特别地,代理包含
    有:
    • 寻址信息:用于受客户端run time 联系是的服务器
    • 对象标识:用于确定服务器遭到之呐一个对象是请求的对象
    • 可选的facet 标识符:用于确定代理所引述的凡目标的呀一个facet

串化代理(Stringified Proxies)
代办中的音信可就此串的花样表示。例如:
SimplePrinter:default -p 10000
这个字符串表示的是一个代理,我们可以看这种代表法。Ice run
time 提供了有的API 调用,允许而将代理转换成为它的串化形式,或是进行
相反的转移。例如,如果您要是将代理存储在数量库表或文本文件被,这种
功用会十分有因此。
设若客户理解某个Ice 对象的标识及其寻址信息,使用这些信,它可
因为“凭空”创建代理。换句话说,代理内部的保有消息还被认为是透明底
;要同有对象关系,客户就需要了解这个目标的标识、寻址信息,以及
靶的色(为了能够调用操作),就好了。

Ice 核心也分布式应用开发提供了一个全面的客户-服务器平台。但现
确实应用得之常连是颇为地通信能力:你平常还需要具有如此的力:
随需启动服务器、把代理分发给客户、分发异步事件、配置你的运、分
犯下补丁,等等。
当Ice 中发出部分劳动, 能够提供上述特性与外有特点。这些劳务为
兑现成为Ice 服务器,你的使用做的凡这些服务器的客户。这些劳务还未曾
采用Ice 的另外向利用开发者隐藏起来的里特性,所以在答辩及,你得
自行开发等价格的劳动。但吃这些劳动变成平台的平等片,你不怕得小心让
动开发,而无需先构建多基础设备。而且,构建这样的劳务所需要的善
作量并非微不足道,所以若当了解有什么服务可用,而不要再发明你
和谐的轮。

Ice 以架设上吗下开发者提供了部分益处:
• 面向对象的语义
Ice “在路经达”完全保留了 面向对象范型。所有的操作调用都运
迟后绑定,所以操作的落实之选定,是冲目标在运作时的(而不是
静态的)实际类型决定的。
• 支持并跟异步的消息传递
Ice 提供了共同异步的操作调用和分担,并且通过IceStorm 提供了
揭晓-订阅消息传递机制。这样,你可因你的以之需要来挑选接
信模型,而不必把你的下硬塞进某种模型里。
• 支持多独接口
通过facets,对象好提供多单不相干的接口,同时以跳这些连
丁、保持单纯的对象标识。这提供了偌大的八面玲珑,特别是在这样的情节
况下:应用在生演化,但与此同时要跟更老的、已经部署之客户保持兼
容。
• 机器无关性
客户与服务器和底层的机械架构屏蔽开来。对于以代码而言,像
配节序和填充这样的问题且藏匿了起来。
• 语言无关性
客户及服务器可以分级安排,所用语言为可以不同(目前支撑
C++、Java,以及PHP (客户端))。 客户和服务器所用的Slice 定义建
马上两者之间的接口合约,这样的定义为是它唯一要达成一致的东方
西。
• 实现无关性
客户无知道服务器是何等实现其目标的。这意味,在客户安排的
后,服务器的落实可转,例如,它可以不同之坚持不懈机制,甚至
差的次第设计语言。
• 操作系统无关性
Ice API 完全是只是移栽的,所以一律的源码能够当Windows 和UNIX
直达编译和运作。
• 线程支持
Ice run time 完全是线程化的,其API 是线程安全之。 作为利用开发
啊,(除了当访问共享数据时展开共同)你管需呢开发线程化的高性能
客户与服务器交由额外努力。
• 传输体制无关性
Ice 时用了TCP/IP 和UDP 作为传输协议。客户及服务器代码都
无需要了解底层的传导体制(你可由此一个安排参数选择所需要的招
输机制)。
• 位置以及服务器透明性
Ice run time 会负责定位目标,并保管根的传体制,比如打开和
闭馆连接。客户及服务器之间的相显得像是无论连接的。如果当客户调
为此操作时,服务器并未运行,你得通过IcePack 让它随需启动。服
务器可以迁移到不同之物理地址,而未见面使客户有的代办失效,而他
家了不懂得对象实现是什么样分布于多单服务器进程上的。
• 安全性
由此SSL 强加密,可以使客户及服务器完全安全地拓展通信,这
类,应用可行使非安全之纱安全地展开通信。你得用Glacier
通过防火墙,实现安康的乞求转发,并且完全支持回调。
• 内建的持久机制
应用Freeze,创建持久的对象实现成为了同码微不足道的事务。Ice
提供了针对大性能数据库Berkeley DB[18] 的内建支持。
• 开放源码
Ice 的源码是放的。尽管要用Ice 平台,并不一定要看源码,
透过源码你可了解各种业务是安贯彻之,或把这些代码移植到新的
操作系统及。
总而言之, Ice 提供了头号的分布式计算开发同布局环境,比我们所知道
志之另外任何平台还重复完整。

相关文章