没有合适的资源?快使用搜索试试~ 我知道了~
这是介绍ice开发分布式程序的文档. ICE是ZeroC公司开发的一款简单高效的开源中间件平台,通过它可以快速地开发出高效、强壮、优雅的分布式的软件。
资源推荐
资源详情
资源评论
ICE是ZeroC公司开发的一款简单高效的开源中间件平台,通过它可以快速地开发出高效、强壮、优雅的分布式的软件。
ICE是ZeroC公司开发的一款高效的开源中间件平台,全称是Internet Communications Engine。
它的主要设计目标是:
? 提供适用于异种环境的面向对象中间件平台。
? 提供一组完整的特性,支持广泛的领域中的实际的分布式应用的开发。
? 避免不必要的复杂性,使平台更易于学习和使用。
? 提供一种在网络带宽、内存使用和 CPU 开销方面都很高效的实现。
? 提供一种具有内建安全性的实现,使它适用于不安全的公共网络。
ICE支持多种编程语言:C++、Java、C#、VB、Python、Ruby,也就是说使用ICE时我们可以让这些语言无缝沟通,不过由于ICE是用C++编写的,不管用什么语言,你都需要先用C++编译出一个ICE才行(或者下载已编译的版本)。
本篇文章以C++语言作为演示语言,其它语言除语法不同外,使用方法非常类似。
配置ICE开发环境
首先,从http://www.zeroc.com/download.html 下载ICE,目前最新版本是Ice-3.3.1。下载页面里除了ICE的源码之外,也提供了VC或C++Builder的已编译安装包以及各Linux版本的RPM下载。
如果下载的是源码版本,编译方法是(以VC2005 Express为例):
1. ICE需要一些第三方库,在编译ICE之前要先编译第三方库,清单如下(它们也能在ICE官网上下载):
Berkeley DB
expat
OpenSSL
bzip2
mcpp2. 编译完上面这些库以后,把它们放到同一个目录中,然后设置环境变量THIRDPARTY_HOME:
set THIRDPARTY_HOME = d:\ice3party3. 打开$ICE/cpp/Make.rules.mak,找到CPP_COMPILER变量,改成CPP_COMPILER = VC80_EXPRESS
这个依据你的编译器决定,可以是VC60, VC80, VC80_EXPRESS, VC90, VC90_EXPRESS, BCC2007, BCC2009
4. 如果想让编译的库能脱离VC运行时库,打开$ICE/cpp/Make.rules.msvc,把CPPFLAGS = $(CPPFLAGS) -MD改成CPPFLAGS = $(CPPFLAGS) -MT。
5. 在命令行下进入$ICE/cpp目录,输入nmake -f Makefile.mak开始编译。默认是编译成Debug模式的DLL库。如果想编译成静态库,可以设置变量STATICLIBS=yes;想编译成Release模式,设置OPTIMIZE=yes。如
nmake -f Makefile.mak STATICLIBS=yes OPTIMIZE=yes如果按上面方法设置,应该不会有问题。
6. 最最后,把bin目录加入path变量,以便让系统能找到ICE的dll文件(其实主要是三个dll文件,ice33.dll、iceutil33.dll和bzip2.dll)
以后编译ICE的程序时,把上面编译好或直接下载的已编译版本的ice.lib和iceutil.lib(或Debug版本的iced.lib和iceutild.lib)链接入项目即可。
ICE的HelloWorld
跨语言的分布式系统首先要定义一个与编程语言无关的接口描述语法,用于分布于各处的服务器与客户端之间对话。比如DCOM和CORBA使用IDL语法,SOAP使用WSDL语法,当然还有时下流行的JSON。
ICE是ZeroC公司开发的一款高效的开源中间件平台,全称是Internet Communications Engine。
它的主要设计目标是:
? 提供适用于异种环境的面向对象中间件平台。
? 提供一组完整的特性,支持广泛的领域中的实际的分布式应用的开发。
? 避免不必要的复杂性,使平台更易于学习和使用。
? 提供一种在网络带宽、内存使用和 CPU 开销方面都很高效的实现。
? 提供一种具有内建安全性的实现,使它适用于不安全的公共网络。
ICE支持多种编程语言:C++、Java、C#、VB、Python、Ruby,也就是说使用ICE时我们可以让这些语言无缝沟通,不过由于ICE是用C++编写的,不管用什么语言,你都需要先用C++编译出一个ICE才行(或者下载已编译的版本)。
本篇文章以C++语言作为演示语言,其它语言除语法不同外,使用方法非常类似。
配置ICE开发环境
首先,从http://www.zeroc.com/download.html 下载ICE,目前最新版本是Ice-3.3.1。下载页面里除了ICE的源码之外,也提供了VC或C++Builder的已编译安装包以及各Linux版本的RPM下载。
如果下载的是源码版本,编译方法是(以VC2005 Express为例):
1. ICE需要一些第三方库,在编译ICE之前要先编译第三方库,清单如下(它们也能在ICE官网上下载):
Berkeley DB
expat
OpenSSL
bzip2
mcpp2. 编译完上面这些库以后,把它们放到同一个目录中,然后设置环境变量THIRDPARTY_HOME:
set THIRDPARTY_HOME = d:\ice3party3. 打开$ICE/cpp/Make.rules.mak,找到CPP_COMPILER变量,改成CPP_COMPILER = VC80_EXPRESS
这个依据你的编译器决定,可以是VC60, VC80, VC80_EXPRESS, VC90, VC90_EXPRESS, BCC2007, BCC2009
4. 如果想让编译的库能脱离VC运行时库,打开$ICE/cpp/Make.rules.msvc,把CPPFLAGS = $(CPPFLAGS) -MD改成CPPFLAGS = $(CPPFLAGS) -MT。
5. 在命令行下进入$ICE/cpp目录,输入nmake -f Makefile.mak开始编译。默认是编译成Debug模式的DLL库。如果想编译成静态库,可以设置变量STATICLIBS=yes;想编译成Release模式,设置OPTIMIZE=yes。如
nmake -f Makefile.mak STATICLIBS=yes OPTIMIZE=yes如果按上面方法设置,应该不会有问题。
6. 最最后,把bin目录加入path变量,以便让系统能找到ICE的dll文件(其实主要是三个dll文件,ice33.dll、iceutil33.dll和bzip2.dll)
以后编译ICE的程序时,把上面编译好或直接下载的已编译版本的ice.lib和iceutil.lib(或Debug版本的iced.lib和iceutild.lib)链接入项目即可。
ICE的HelloWorld
跨语言的分布式系统首先要定义一个与编程语言无关的接口描述语法,用于分布于各处的服务器与客户端之间对话。比如DCOM和CORBA使用IDL语法,SOAP使用WSDL语法,当然还有时下流行的JSON。
ICE使用的是称为Slice(Specificatoin Language for Ice)的语法,Slice语法和C++(或Java,C#)比较相近,只要会C++(或Java,C#)很容易就能写Slice定义了
下面是一个简单的接口的Slice定义:
1.module Demo {
2. interface Printer {
3. void printString(string s);
4. };
5.};
它定义一个Printer接口(interface),这个接口只有一个printString方法,输入参数是一个字符串(string)。最后,这个接口位于Demo模块(module)之下。
把它保存为Printer.ice后接着我们使用slice2cpp程序依据这个Slice定义生成C++使用的头文件和对应的代理代码:
slice2cpp Printer.ice如果没提示错误,就会生成Printer.h和Printer.cpp,把这两个文件加入到服务器端项目和客户端项目后就可以互相对话了。
下表是Slice与C++的映射关系
Slice C++
#include #include
#ifndef #ifndef
#define #define
#endif #endif
module namespace
bool bool
byte Ice::Byte
short Ice::Short
int Ice::Int
long Ice::Long
float Ice::Float
double Ice::Double
string Ice::string
enum enum(不支持指定数字)
struct struct
class class(所有方法都是纯虚函数)
interface struct(所有方法都是纯虚函数,没有成员变量)
sequence<T> std::vector<T>
下面是一个简单的接口的Slice定义:
1.module Demo {
2. interface Printer {
3. void printString(string s);
4. };
5.};
它定义一个Printer接口(interface),这个接口只有一个printString方法,输入参数是一个字符串(string)。最后,这个接口位于Demo模块(module)之下。
把它保存为Printer.ice后接着我们使用slice2cpp程序依据这个Slice定义生成C++使用的头文件和对应的代理代码:
slice2cpp Printer.ice如果没提示错误,就会生成Printer.h和Printer.cpp,把这两个文件加入到服务器端项目和客户端项目后就可以互相对话了。
下表是Slice与C++的映射关系
Slice C++
#include #include
#ifndef #ifndef
#define #define
#endif #endif
module namespace
bool bool
byte Ice::Byte
short Ice::Short
int Ice::Int
long Ice::Long
float Ice::Float
double Ice::Double
string Ice::string
enum enum(不支持指定数字)
struct struct
class class(所有方法都是纯虚函数)
interface struct(所有方法都是纯虚函数,没有成员变量)
sequence<T> std::vector<T>
剩余7页未读,继续阅读
资源评论
npxxy1
- 粉丝: 0
- 资源: 9
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功