ICE

来自开放百科 - 灰狐
2011年7月13日 (三) 01:49Allen (讨论 | 贡献)的版本

跳转到: 导航, 搜索
ZerocLogo.gif

Internet Communications Engine(Ice), Internet通信引擎

设计目标

  • 提供适用于异种环境的面向对象中间件平台。
  • 提供一组完整的特性,支持广泛的领域中的实际的分布式应用的开发。
  • 避免不必要的复杂性,使平台更易于学习和使用。
  • 提供一种在网络带宽、内存使用和CPU 开销方面都很高效的实现。
  • 提供一种具有内建安全性的实现,使它适用于不安全的公共网络。

更简单地说, Ice 的设计目标可陈述为:“让我们构建与CORBA 一样强大的中间件平台,而又不去犯CORBA 所犯下的任何错误”。

目录

新闻

Wikipedia-35x35.png 您可以在Wikipedia上了解到此条目的英文信息 ICE Thanks, Wikipedia.

自http://www.zeroc.com/forums/external.php?type=RSS2加载RSS失败或RSS源被墙

Ice 组成

Slice

Ice专用的接口描述语言。Slice描述了客户端和服务端都必须遵循的接口规范,而且也可以用来描述持久数据。

Slice Compilers

Slice specifications are compiled into various programming languages. Ice supportsC++, Java, C#, Visual Basic, Python, PHP, and Ruby.

Ice

The Ice core library.

IcePack

IcePack 是Ice 的定位服务

  • IcePack 允许你注册服务器,进行自动启动:当客户发出请求时,服务器无需在运行, IcePack 会在第一个客户请求到达时,随需启动服务器。
  • IcePack 支持部署描述符(deployment descriptors),能让你轻松地配置含有若干服务器的复杂应用。
  • IcePack 提供了一种简单的对象查找服务,客户可用来获取它们感兴趣的对象的代理。

IceBox

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

IceStorm

IceStorm 是一种发布-订阅服务,能够解除客户与服务器的耦合。在本质上, IceStorm 充当的是事件分发交换机。

IcePatch

IcePatch 是一种软件更新服务。 你可以用它来轻松地把软件更新分发给客户。客户可以简单地连接到IcePatch,请求获得特定应用的更新。

Glacier

Glacier 是Ice 防火墙服务:它能让客户与服务器通过防火墙安全地进行通信,且又不牺牲安全性。 客户-服务器之间的通信数据使用公钥证书进行了完全的加密,并且是双向的。Glacier 支持相互认证,以及安全的会话管理。

IceGrid

Ice for Grid Computing

IceUtil

A collection of utility functions, such as Unicode handling and thread programming. (C++ only.)

Freeze

Freeze provides automatic persistence for Ice servants. With just a few lines of code, an application can incorporate a highly-scalable evictor that efficiently manages persistent objects.

FreezeScript

It is common for persistent data types to change, especially in large software projects.

IceSSL

A dynamic SSL transport plug-in for the Ice core.

安装

分别安装 rpm 包 或
set ICE_HOME=<Ice installation root directory>
set PATH=%ICE_HOME%\bin;%PATH%
nmake /f Makefile.mak

Ice and CORBA

Differences between Ice and CORBA - http://www.zeroc.com/iceVsCorba.html

Ice and TAO

http://www.zeroc.com/performance/

Demo

C++

创建 Printer.ice

module Demo {
    interface Printer {
        void printString(string s);
    };
};

编译 slice2cpp Printer.ice, 生成 Printer.h 和 Printer.cpp

再创建 server.cpp, client.cpp 文件

通过 vc6.0 打开 demo.dsw, 编译相关项目,

server.exe
client.exe

Objective‑C

slice2objc Printer.ice

Java

export CLASSPATH=classes:$CLASSPATH
mkdir generated
slice2java ‑‑output‑dir generated Printer.ice
java Server
java Client

C#

mkdir generated
slice2cs ‑‑output‑dir generated Printer.ice
server.exe
client.exe

Python

slice2py Printer.ice
python Server.py
python Client.py

Ruby

slice2rb Printer.ice 
server //  Ice for Ruby does not support server-side, we will use the C++ server
ruby Client.rb

成功应用

More: http://www.zeroc.com/customers.html

  • 人人网核心的数据和消息中间件用它实现。Ice通信框架在人人网完成了两件事:通信和定位。客户端通过IceGrid组件定位到需要的服务地址,将请求发送到中间层服务,中间层服务将结果返回。客户端只需要知道一个地址就可以找到所有的服务;同时,众多服务也可以在不同的服务器之间随意迁移。在现在的人人网有超过500个Ice写成的中间层服务在运行。

http://sinofool.net/blog/

  • 上海宝信 selected Ice as the distributed computing foundation for iPlature.

More Customers

图集

链接

Comment-32x32.png

<discussion>characters_max=300</discussion>

分享您的观点
个人工具
名字空间

变换
操作
导航
工具箱