ICE(Internet Communications Engine)是ZeroC提供的一款高性能的中间件,基于ICE可以实现电信级的解决方案。在设计网站架构的时候可以使用ICE实现对网站应用的基础对象操作,将基础对象操作和数据库操作封装在这一层,在业务逻辑层以及表现层(java,php,.net,python)进行更丰富的表现与操作,从而实现比较好的架构。基于ICE的数据层可以在未来方便的进行扩展。ICE支持分布式的部署管理,消息中间件,以及网格计算等等。
服务间经常会需要相互调用数据,例如BOSS这边会调用AEP那边的接口(查询用户信息和公司信息等等)。由于设计时这些服务仅仅基于统一的用户中心,服务间基本是独立的,所以要实现这些调用只能在每个服务上新增为其它服务提供服务的服务。基于http和xml的远程调用,用了一段时间,发现维护成本和访问性能都存在问题。
优点:
1、支持不同语言之间通讯的。也就是说服务器端拿着ICE的文档去编写服务器端的代码,它可能采取c++也可能采用C#也可能采用java来编写服务器端的代码。而客户端用户拿着ICE的文档,去编写客户端的代码。而他们编译出来的代码是可以相互通信的,因为他们采用了同一个桥梁ICE。
2、传统的SOCKET编程,我们可以更为清楚程序的性能,能够更直接的操控SOCKET的设置,比如发送超时时间,接受BUFFER的大小,以及进行自己的协议加密。但是由于其调试成本较高,且不易于分布式部署。ICE3.2 以后,由于采用了epoll 模型,其通信层的性能提升较为明显。而且其相较于SOCKET编程一个很明显的优势是便于调试。
特性:
面向对象的规范语言。
易于使用的C++和Java映射。
非常高效的协议,还可以进行协议压缩。
异步方法调用(asynchronous method invocation)和异步方法分派 (asynchronous method dispatch)。
动态的传输插件。
TCP/IP和UDP/IP支持,以及基于SSL的安全性。
Ice防火墙解决方案,支持回调。
使用XML的自动持续(persistence),包括对版本管理的支持。
类型化的消息传递服务。
软件修补和更新服务。
完善的部署工具。
GPL授权或商业授权(商业用途)。
支持Windows 2000/XP、Linux和Solaris操作系统。
当BOSS访问量大时还是用ICE实现性能更高
配置实现: Client-Server之间的通信采用接口的方式,开发人员无需关注传输和接口的协议处理
一: 定义接口文件
二: 实现服务
三: 调用服务
实现:
前提:PATH环境配置C:\Ice-3.3.0\bin; (加入我的环境在C盘下面)
命令:slice2java XXXX.ice (java版的)
通过上述命令
就可以在相同文件夹下面生成一系列的java文件,查看源码可以发现就是一些 final,abstract类以及接口。
导包:Ice.jar 核心包
服务器端:
int status = 0;
//定义通信器
Ice.Communicator ic = null;
try {
//经过测试args里面的参数一直为空
ic = Ice.Util.initialize(args);
//定义适配器
Ice.ObjectAdapter adapter = ic.createObjectAdapterWithEndpoints("SimplePrinterAdapter", "default -p 10000");
//定义实体对象
Ice.Object object = new PrinterI();
//往适配器中加入实体对象
adapter.add(object,ic.stringToIdentity("SimplePrinter"));
//适配器激活
adapter.activate();
//等待客户端响应
ic.waitForShutdown();
} catch (Exception e) {
e.printStackTrace();
status = 1;
}
//通信器关闭
if (ic != null) {
try {
ic.destroy();
} catch (Exception e) {
System.err.println(e.getMessage());
status = 1;
}
}
System.exit(status);
实体对象
public class PrinterI extends Demo._PrinterDisp(该对象是刚才编译生成的)
客户端
int status = 0;
//定义通信器
Ice.Communicator ic = null;
try {
//初始化
ic = Ice.Util.initialize(args);
//访问服务器
Ice.ObjectPrx base = ic.stringToProxy("SimplePrinter:default -p 10000");
Demo.PrinterPrx printer = Demo.PrinterPrxHelper.checkedCast(base);
if (printer == null)
throw new Error("Invalid proxy");
printer.printString("Hello World!");
} 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);
先启动服务器 在启动客户端实现交互
分享到:
相关推荐
本文将深入探讨Ice-3.5.1的核心特性、主要组件以及源码分析。 一、Ice的核心特性 1. 跨语言支持:Ice支持C++、Java、Python、C#等多种编程语言,使得不同语言之间的通信变得简单。 2. 高性能:Ice采用了优化的二...
### 分布式ICE介绍 #### 一、分布式系统与ICE:一种灵活且简易的中间件 在探讨ICE之前,我们先来了解下分布式系统及早期的一些中间件平台。分布式系统是指由多台计算机组成,这些计算机通过网络进行通信并协同工作...
### ICE介绍与开发入门 #### 一、ICE概述 ##### 1.1 什么是ICE ICE(Internet Communications Engine)是一款由ZeroC公司开发的高性能、跨平台、支持多种编程语言的中间件产品。ICE主要用于构建分布式应用程序,...
5. **易于使用**:Ice提供了一套完整的开发工具,如代码生成器、调试器和性能分析工具,使得开发分布式应用变得简单。 6. **安全性**:Ice支持SSL/TLS加密,保证了数据传输的安全性,同时支持身份验证和授权机制,...
下面将详细介绍Ice中间件的主要特性、安装过程以及如何在项目中应用。 1. **Ice中间件特性** - **类型安全**:Ice提供了强大的类型系统,确保在分布式环境中数据的准确传输,避免了类型转换错误。 - **序列化**:...
- **术语(Terminology)**:介绍了与Ice相关的专业术语,帮助读者更好地理解文档中的内容。 - **Slice(Ice 规范语言)**:Slice 是一种用于定义接口和数据类型的语言。它被用来描述服务端和客户端之间通信所需的...
在2005年6月发行的《ICE 学报》第三期中,第一篇文章介绍了IceStorm,这是一篇旨在帮助读者理解IceStorm的基本概念和应用场景的文章。 **主要内容概述:** IceStorm作为Ice框架的一部分,提供了高级功能,尤其是...
在《ICE 学报》第五期(2005年8月)中,主要介绍了IcePack的基础知识、Ice-E预览、避免死锁(第二部分)以及FAQ角等内容。本期学报深入探讨了远程过程调用(RPC)的本质及其与SOAP、CORBA等技术的关系,同时还涉及了...
手册详细介绍了ICE的API用法、协议规范、异常处理以及最佳实践。通过阅读手册,开发者可以快速理解如何定义接口、创建代理、调用远程方法等。对于初学者,手册中的例子尤其有帮助,能够帮助他们快速上手。 ICE工具...
- **定义**:Iceberg 是一种针对海量数据分析设计的开放表格式(Table Format),它位于计算框架(如 Flink、Spark 等)之下,数据文件之上,是一种元数据及数据文件的组织方式。 #### 1.2 冰山(Iceberg)特性详解 ...
通过对网络协议优化及缓存技术的应用, Ice确保了即使在网络条件不佳的情况下也能保持良好的性能表现。此外, Ice还提供了对流式传输的支持, 这对于处理大量数据或多媒体内容尤为重要。 #### 4. 安全性和可靠性 Ice...
本说明书详细介绍了RealView ICE和RealView Trace的使用方法、更新历史和版权声明等重要信息。 在使用RealView ICE前,用户需要了解其版本更新历史,包括发布日期、版本号以及对应的保密级别。说明书中的版本更新...
**Apache Iceberg介绍** Apache Iceberg 是一个用于大规模数据湖的表格式,支持ACID事务、时间旅行和高效的查询。它的设计目标是解决大数据存储中的数据管理和查询性能问题。Iceberg通过以下方式解决上述挑战: - ...
此外,可能还会有实际案例分析,如如何利用ICE构建分布式游戏服务器或者协同工作系统,以帮助读者更好地将理论知识应用于实践。 标签中提到的“P2P NET c+”进一步强调了教程的重点。P2P网络是ICE的一个重要应用...
二、ICE介绍 ICE(Internet Communications Engine)是ZeroC公司开发的一款简单高效、面向对象、开源的中间件,通过它可以快速开发出高效、强壮、优雅的分布式软件。它提供了用来建立面向对象的客户/服务端应用程序...
《Ice-3.3.1.pdf》很可能是ICE的官方文档,详细介绍了ICE 3.3.1版本的特性、安装过程、API用法、编程指南等内容。在文档中,你可能会学习到如何配置ICE环境,创建ICE服务器和客户端,以及如何利用ICE的接口进行数据...
- **代码分析**:ICE插件能够进行代码质量分析,检查代码中可能存在的问题,如未使用的变量、过时的API调用等,并提供改进建议。 - **重构工具**:支持多种代码重构操作,如提取方法、重命名、移动文件等,帮助...
《基于ICE仿真器的多核系统软件调试》这份文档很可能详细介绍了如何配置和使用ICE工具,包括设置调试环境、创建和管理调试会话、跟踪多核执行、理解并发行为、处理异常和中断、以及优化多核性能等方面的知识。...
《ICE基础介绍与使用详解》 ICE,全称“Integration and Communication Environment”,是一种高性能、跨平台的中间件,用于构建分布式应用系统。本文将详细阐述ICE的基础知识,包括官方网站、下载地址、在Linux上...
本教程将详细介绍如何在Linux环境下搭建ICE平台,这对于进行ICE相关的开发工作至关重要。 首先,安装ICE的前提条件是拥有一个稳定且兼容的Linux操作系统。Ubuntu或CentOS等Linux发行版通常是开发环境的首选。确保...