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);
先启动服务器 在启动客户端实现交互
分享到:
相关推荐
软件介绍 集成有非常强大的检测和分析引擎,可以识别 200 多种入侵技巧,给你全面的网络检测以及系统防护,它还能即时监测网络端口和协议,拦截所有可疑的网络入侵,无论黑客如何费尽心机也无法危害到你的系统,而且...
MATLAB中ice函数代码描述 这是Price Weller Pinkel()海洋混合层模型的Python实现。 此代码基于PWP模型的MATLAB实现,该模型最初由(美国罗德岛州)编写,后来由Byron Kilbourne(华盛顿大学)和Sarah Dewey...
现在,为了配合国家着重推广iec870-5-101,iec870-5-104(以太网),我公司现在国内率先推出第一款规约分析软件-----PMA2.0,以便于规约协议的标准化,提高工作人员的工作水平和效率。 PMA2.0是我公司工作人员长期在...
MATLAB中ice函数代码IO-PS 与输入输出产品空间(IO-PS)研究相关的代码公共存储库[描述于Bam,W.和De Bruyne,K.(2019)。 改善产业政策干预措施:南非的钢铁案例。 发展研究杂志,55(11),2460-2475。 ] 当前...
以大数据实时数仓项目为主线,理论和实战相结合,全方位、全流程、无死角讲解数仓项目的数仓基础、项目规划、需求分析、架构设计与技术选型、大数据平台构建、项目业务介绍、数据采集、数仓建模理论、数仓设计规范、...
本书通过由浅入深的10个实验,详细地介绍了ModelSim 6.0和Quartus Ⅱ 8.1的操作步骤,扼要地介绍了Quartus Ⅱ 8.1的主要设计资源和SOPCBuilder等工具的应用方法,并阐述了如何配合自己设计的Verilog模块和FPGA中的...
WebRTC 简介 WebRTC,名称源自网页实时通信(Web Real-Time Communication)...7.8 一个开源的ICE库——libnice介绍 7.9 4种利用TURN穿越对称型NAT方案的设计与实现 7.10 基于ICE方式SIP信令穿透Symmetric_NAT技术研究
电力系统仿真软件介绍...真分析软件的结构、功能特点和应用情况, 综合比较了它们的优势, 并简要介绍了MA TLAB、PSP ICE、PSSö E、ETM SP、SYM POW 和EDSA 等 仿真软件, 最后展望了电力系统仿真软件的未来发展方向。
BlackICE Server Protection 功能简介: BlackICE Server Protection 是 ISS 安全公司出品的一款著名的入侵检测系统, 拥有强大的检测,分析以及防护功能,而且很容易使用,可以侦察出谁在扫你的端口, 在...
介绍了磁悬浮铁路的国内外发展概况,以TR为例论述了EMS型磁悬浮铁路的技术经济特点,并将TR与其他类型的磁悬浮铁路以及ICE高速铁路进行了技术经济比较,展现了TR的商业前景。
从介绍逆变器的结构和工作原理入手,分析DC/AC逆变器电磁辐射源,并建立了各辐射源的模型,得出仿真图像,进一步分析它们的辐射情况。对传输线束串扰理论进行了阐述,并建立了三导体传输线(适用多导体)串扰模型。...
本文首先对插桩(Stub)、模拟器(Simulator)、在线仿真(ICE)、在线调试(OCD)等主流调试技术进行了分析比较,特别针对基于JTAG协议的在线仿真器技术进行了深入研究,给出了在线仿真器的设计方案。整个在线仿真器系统...
编码相关工具: UNP, PKLITE, GT, WWPACK, UNWWPACK等是一些压缩及解压缩的工具,一个程式被压缩的目的是防止有人破解它,它通过一定的运算法编辑,执行的时候用自己的压缩算法 在内存中开辟一块区域,解码后再执行,所以...
这些电源大多都采用了智能温控系统和大规格的风扇,但其它类型的(比如水冷、热管等)散热方式还没有出现,我们今天给大家介绍的电源则打破了这种传统,它居然应用了“制冷片”散热器技术。 这就是来自多彩的极冻ICE...
摘 要: 介绍了LED日光灯驱动的特点,设计了实用的电容降压式LED日光灯驱动电路,着重分析了关键元件参数的选择原则。采用PSp ice仿真软件对设计的电路进行了可行性验证,并在此基础上制作了实物电路,用作12W T8...
在主机和目标系统之间进行协议分析、转换的模块。下面分别介绍这些组成部分。 位于主机上的调试器主要用于接收用户的命令,并将其发送到目标系统中的调试部件;接收从目标系统返回的饿数据,并以一定的格式显示给...
毕竟现在的很多办公中大都是在PC端操作文档等软件,在这些庞大而繁重的业务中,单单依靠人力去做文档的操作需要的代价是巨大的,比如数据统计,数据分析等业务要求。这就需要我们在开发系统时,应该尽量减少使用者的...
[Trial version] 浅谈壳的加载步骤及手动脱壳。.htm [Trial version] 第7章 如何让壳与程序融为一体 [Trial version] 7.2 欺骗检查壳的工具 [Trial version] 让侦测工具把壳识别为VC++.htm [Trial version] 7.4...
嵌入式系统开发环境中,目标监控器对...从实现方式的角度介绍和分析了当前主流嵌入式系统开发环境目标监控器技术,如软件监控器、硬件监控器、软件仿真器和软件模拟监控器等,并对比了各种实现技术的差异和优缺点。
从提高开关稳压电源的效率着眼,对新型大屏幕彩电开关稳压电源电路进行了介绍,并结合应用实例对半桥式开关稳压电源的工作原理进行了分析。