Ice 出自ZeroC名门之下 , Ice 是一种面向对象的中间件平台。从根本上说,这意味着Ice 为构建面向对象的客户-服务器应用提供了工具、API 和库支持。Ice 应用适合于异构平台环境中使用:客户和服务器可以采用不同的编程语言,可以运行在不同的操作系统和机器架构上,并且可以使用多种网络技术进行通信。无论部署环境如何,这些应用的源码都是可移植的。
Zeroc ICE ( Internet Communications Engine )中间件号称标准统一,开源,跨平台,跨语言,分布式,安全,服务透明,负载均衡,面向对象,性能优越,防火期穿透,通讯屏蔽。因此相比 Corba,DCOM,SOAP,J2EE等的中间件技术,自然是集众多优点于一身,而却没有他们的缺点。
其采用C/S 模式结构,支持同步调用方式和异步调用方式,异步派发调用方式。支持跨语言的对象调用。多种语言之间采用共同的Slice(Specification Language for Ice)进行沟通。支持ice到C,JAVA,C#,VB,Python,Ruby,PHP等多种语言的映射。 Ice具有丰富的特性,其性能远是基于jms 所不能比的。
下面记录一个基于java的ice应用过程
1 下载最新安装包;
http://www.zeroc.com/download.html 根据操作系统和需要选择
我这里安装的是ice-3.3.0
2 安装之后的Ice相关路径:
slice2cpp,slice2java在/bin/下
Ice.jar 存储于/lib/java2/下
相关的Ice的库存储于/lib下.
3.创建ice文件
model.ice
#ifndef _MODEL
#define _MODEL
module com
{
module alan
{
module generated
{
module model
{
/**定义整型数组**/
sequence<int> IntegerArray;
/**自定义Map类型**/
dictionary<string, string> CustomMap;
/**消息类型**/
enum MessageType {ERROR,INFO,WARNING};
/**消息的操作类型**/
enum ActionType {Add,Modifiy,Remove,Stop,Start,Pause};
/** 消息结构 **/
["java:getset"]
struct Message {
/**消息类型**/
MessageType type;
/**消息类型**/
ActionType action;
/**相关id**/
IntegerArray relatedIds;
/**扩展属性**/
CustomMap extention;
};
};
};
};
};
#endif
service.ice
#ifndef _GENERATED
#define _GENERATED
#include <model.ice>
module com
{
module alan
{
module generated
{
interface MessageServiceIce
{
/**
* 向ice服务发送信息
* @param message 消息内容
* @return true 成功 false 失败
*/
string sendMessage(model::Message msg);
};
};
};
};
#endif
4.dos环境下执行(可以搞成.bat文件)
cd E:/workspace/ICETest/slice
E:/Ice-3.3.0/bin/slice2java -I. --output-dir=../src *.ice //生产代码
E:/Ice-3.3.0/bin/slice2html -I. --output-dir=doc *.ice//生产doc文档,可以忽略
5.代码生产后结构(实际应用中可以吧generted 打包放置到client和server端)
导入ice.jar编写代码,MessageServiceIceImpl .java代码:
public class MessageServiceIceImpl extends _MessageServiceIceDisp {
public String sendMessage(Message msg, Current __current) {
String str = msg.getType() +" "+ msg.getAction()+" " + Arrays.toString(msg.getRelatedIds());
return str;
}
}
服务器端代码:
public class IceService {
public static void main(String[] args){
int status = 0;
Communicator ic = null;
try{
ic = Util.initialize(args);
ObjectAdapter adapter = ic.createObjectAdapterWithEndpoints("testAdapter", "tcp -h localhost -p 10000");
ObjectImpl object = new MessageServiceIceImpl();
adapter.add(object, ic.stringToIdentity("testAdapter"));
adapter.activate();
ic.waitForShutdown();
} catch (Ice.LocalException e) {
e.printStackTrace();
status = 1;
} catch (Exception e) {
System.err.println(e.getMessage());
status = 1;
}
if (ic != null) {
try {
ic.destroy();
} catch (Exception e) {
System.err.println(e.getMessage());
status = 1;
}
}
System.exit(status);
}
客户端代码:
public class IceClient {
public static void main(String[] args){
int status = 0;
Communicator ic = null;
try{
ic = Ice.Util.initialize(args);
Ice.ObjectPrx base = ic.stringToProxy("testAdapter:tcp -h localhost -p 10000");
MessageServiceIcePrx client = MessageServiceIcePrxHelper.checkedCast(base);
if (client == null)
throw new Error("Invalid proxy");
Map<String ,String > map = new HashMap<String, String>();
Message msg = new Message(MessageType.INFO, ActionType.Add,new int[]{1},map);
System.out.println(client.sendMessage(msg));//这里调用了Service端方法
} catch (Ice.LocalException e) {
e.printStackTrace();
status = 1;
} catch (Exception e) {
System.err.println(e.getMessage());
status = 1;
}
if (ic != null) {
try {
ic.destroy();
} catch (Exception e) {
System.err.println(e.getMessage());
status = 1;
}
}
System.exit(status);
}
}
6.最后我们开始运行Server,再运行Client,看到控制台输出INFO Add [1],一个基本的ice应用就完成了!
相关推荐
ICE的学习资料主要包括了对ICE框架的理解、使用方法以及相关的案例分析。 《Ice-3.3.1.pdf》很可能是ICE的官方文档,详细介绍了ICE 3.3.1版本的特性、安装过程、API用法、编程指南等内容。在文档中,你可能会学习到...
总结来说,文档为开发者提供了一个全面的ICE学习指南,从ICE的基础知识到实际的编程应用,再到配置和性能优化,覆盖了ICE开发的各个方面。通过阅读这份文档,开发者能够掌握ICE的使用方法,并能在实际项目中有效应用...
**Zeroc ICE 学习大全** Zeroc ICE(Integration and Communication Environment)是一种高性能、跨平台的中间件,用于构建分布式系统。它提供了一种简单而强大的方式来实现对象间的远程调用,使得开发人员可以像...
总之,"ICE"是数字图像处理的一个重要组成部分,通过MATLAB的ice.m源码,我们可以学习到对比度增强的基本思想和方法。这个源码不仅提供了理论知识的实践,也为进一步的图像处理研究和开发提供了宝贵的参考。对于想要...
这些内容将系统性地介绍ICE的各个方面,从基本概念到高级特性的实现,帮助用户从零开始学习并熟练运用ICE进行系统集成和开发。 学习ICE的过程中,开发者首先需要理解其核心的RPC模型,它是如何使得远程对象如同本地...
描述:"ICE最新版官方的学习资料,因为中文基本没有,一起啃吧" 标签:"ICE" 知识点解析: ### Ice:分布式编程框架 Ice,全称为Internet Communications Engine,是ZeroC公司开发的一款用于分布式编程的框架。...
这个学习资料包提供了全面了解和掌握ICE技术的宝贵资源,包括英文原版文档和对应的中文翻译版本,这对于双语学习者来说是极其便利的。 首先,ICE的核心特性在于它的中间件服务,它提供了一套丰富的接口和协议,使得...
《ICE for Windows安装包详解及应用》 ICE(Integration and Communication Engine)是一种高性能、轻量级的中间件...通过深入学习和实践,开发者可以充分利用ICE的强大功能,解决复杂的应用场景中的通信和集成问题。
4. 学习工具:学习如何使用Ice提供的工具进行服务部署、监控和调试。 5. 应用实践:结合具体项目,实践Ice在分布式系统中的应用。 总的来说,Ice-3.5.1作为一款成熟的分布式中间件,其源码提供了宝贵的教育资源。...
本示例程序是基于ICE的C++实现,适用于Visual Studio 2008开发环境,非常适合初学者学习和理解ICE框架的基本用法。 ICE框架的核心特性包括: 1. **多语言支持**:ICE支持多种编程语言,如C++, Java, Python等,...
ice demo是很好的学习ice的东西,ice是一个很好的分布式的网络通讯中间件,很好的支持跨平台等各种功能。 ice demo是很好的学习ice的东西,ice是一个很好的分布式的网络通讯中间件,很好的支持跨平台等各种功能。 ...
ICE分布式程序设计:适用于异种环境的面向对象中间件平台;完整的特性,支持广泛的领域中的实际的分布式应用开发;平台更易于学习和使用;在网络带宽、内存使用和CPU开销方面都很高效的实现;内建安全性的实现,适用...
文档`android连接ICE步骤.docx`可能包含了更详细的步骤和示例代码,建议结合该文档进一步学习。在实际开发中,确保对ICE的API有深入理解和熟悉,同时考虑到Android的多线程模型,合理安排网络操作,避免阻塞UI线程。...
学习ICE中间件,首先要理解其基本架构和组件,然后学习如何使用IDE或命令行工具生成代码。接下来,你需要了解如何定义和实现服务接口,以及如何启动和连接到ICE服务。此外,还要学习错误处理、日志记录和调试技巧。 ...
通过学习和分析这些示例,可以更好地理解和运用Ice的各种特性。 - 使用Ice的调试工具,如`iced`和`icegridadmin`,监控和诊断分布式系统的运行状态。 - 对于大型项目,推荐使用IceGrid进行服务管理和部署,它可以...
总之,这个ICE聊天demo是一个实践性的教程,涵盖了从ICE的安装到实际应用开发的全过程,对于想要了解或学习ICE的开发者来说,是一个宝贵的资源。通过深入研究这个demo,你可以掌握ICE的基本用法,并将其应用到自己的...
在Linux操作系统中,安装ICE(Integration and Communication Environment)包是一个重要的任务,特别是在开发分布式系统或者进行跨平台通信时。ICE是一种高性能、灵活且易于使用的中间件,它允许应用程序通过网络...
总的来说,这些文章涵盖了ICE的各个方面,从基础到高级,从理论到实践,为初学者提供了全面的学习资源,同时也为有经验的开发者提供了深入了解和优化ICE应用的思路。通过学习这些材料,读者将能够掌握ICE的关键技术...
“Ice-1.3.0-中文”和“Ice-3.4.0英文 (pdf)”是重要的学习资料,它们分别提供了Ice早期版本的中文教程和最新版本的英文文档。阅读这些资料,你可以从基础到高级全面了解Ice的各个方面,包括API使用、最佳实践和常见...