欢迎大家赞助一杯啤酒🍺 我们准备了下酒菜:Formal mathematics/Isabelle/ML, Formal verification/Coq/ACL2, C++/F#/Lisp
ICE
Internet Communications Engine
目录 |
设计目标
- 提供适用于异种环境的面向对象中间件平台。
- 提供一组完整的特性,支持广泛的领域中的实际的分布式应用的开发。
- 避免不必要的复杂性,使平台更易于学习和使用。
- 提供一种在网络带宽、内存使用和CPU 开销方面都很高效的实现。
- 提供一种具有内建安全性的实现,使它适用于不安全的公共网络。
更简单地说, Ice 的设计目标可陈述为:“让我们构建与CORBA 一样强大的中间件平台,而又不去犯CORBA 所犯下的任何错误”。
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
Links
- http://www.zeroc.com/ice.html
- Ice 分布式程序设计(954页/中文)
- Ice Documents
- Ice Connections
- http://download.huihoo.com/ice/
成功应用
- Skype uses Ice as part of its communications infrastructure.
- HP uses Ice as the communications infrastructure for its Halo Collaboration Studio.
More: http://www.zeroc.com/customers.html
- Ice通信框架在人人网完成了两件事:通信和定位。客户端通过IceGrid组件定位到需要的服务地址,将请求发送到中间层服务,中间层服务将结果返回。客户端只需要知道一个地址就可以找到所有的服务;同时,众多服务也可以在不同的服务器之间随意迁移。在现在的人人网有超过500个Ice写成的中间层服务在运行。
- 上海宝信 selected Ice as the distributed computing foundation for iPlature.