在开发企业应用的时候,网络通信引擎的选取是至关重要的,有些大公司往往自己独立开发网络协议以及处理socket通信,但对于中小企业来说,利用开源的网络引擎无疑会给你带来很多好处,你无须再关心繁琐的编解码以及一系列协议,也无须关心底层网络通信,你只需要关心你的业务就可以了,本文介绍的是ice网络通信引擎,其中大名鼎鼎的skype的通信协议的一部分就是采用的是它!
互联网通信引擎的选型我觉得有几点很重要:
- 客户端语言无关性:目前客户端采用一种语言,服务器端采用另一种高效的语言已经比较普遍,这就需要网络通信引擎具有无言无关性,ice的客户端语言可以是java,c++,.net,PHP,Python,Pascal等
- 性能:ICE的性能可能比不上ACE,但总体来说,尚算不错
- 伸缩性和扩展能力:ice支持均衡
下面偶举一个很简单的例子,利用C#在客户端向服务器发送请求,要求服务器端打印出“Hellow world”,服务器端语言采用Java,开发步骤日下:
- 利用slice2cs生成C#客户端接口代码,其中ice文件内容如下:
module Demo {
interface Printer {
void printString(string s);
};
};
将以上文件另存为1.ice,在控制台利用:slice2cs 1.ice,生成代码
- 利用C#编写客户端测试代码:
public static void Main(string[] args)
{
int status = 0;
Ice.Communicator ic = null;
try
{
ic = Ice.Util.initialize(ref args);
Ice.ObjectPrx obj = ic.stringToProxy("SimplePrinter:default -p 10000");
PrinterPrx printer = PrinterPrxHelper.checkedCast(obj);
if (printer == null)
throw new ApplicationException("Invalid proxy");
printer.printString("Hello World,中文!");
}
catch (Exception e)
{
Console.Error.WriteLine(e);
status = 1;
}
if (ic != null)
{
// Clean up
//
try
{
ic.destroy();
}
catch (Exception e)
{
Console.Error.WriteLine(e);
status = 1;
}
}
Environment.Exit(status);
}
- 利用Java编写服务器端代码:
public static void main(String[] args) {
int status = 0;
Ice.Communicator ic = null;
try {
ic = Ice.Util.initialize(args);
Ice.ObjectAdapter adapter = ic.createObjectAdapterWithEndpoints(
"SimplePrinterAdapter", "default -p 10000");
Ice.Object object = new PrinterI();
adapter.add(object, Ice.Util.stringToIdentity("SimplePrinter"));
adapter.activate();
ic.waitForShutdown();
} catch (Ice.LocalException e) {
e.printStackTrace();
status = 1;
} catch (Exception e) {
System.err.println(e.getMessage());
status = 1;
} finally {
if (ic != null)
ic.destroy();
}
System.exit(status);
}
测试一下吧:)
分享到:
相关推荐
"ICE(Interprocess Communication Engine)网络通信引擎"是一款强大的分布式应用程序框架,专为构建高性能、跨平台的网络应用而设计。ICE提供了丰富的功能,包括对象透明的远程调用、消息传递、数据序列化以及安全...
"ICE网络通信引擎2"是一种高效且强大的网络通信框架,专为开发分布式应用程序而设计。这个框架的核心目标是简化跨平台、高并发的网络通信,为开发者提供一套完整的解决方案,以便构建可扩展、可靠的网络应用。 ICE...
通过这个Demo,开发者可以学习如何在Ice中创建服务、连接服务、处理异步调用以及实现双向通信。这对于理解和掌握Ice框架,以及构建自己的分布式应用是非常有帮助的。实践中,还可以进一步探索Ice的其他特性,如安全...
Ice通信框架简介;Ice通信框架简介;Ice通信框架简介
Easy Rules,Drools,Aviator表达式求值引擎,Rule Book、Oracle Rules SDK、Blaze (fico)、IBM Decision Manager,DTRules,DSL规则引擎 规则引擎由三部分 事实(Fact):已知对象,比如以上刷卡的行为,即成事实...
《Ice通信框架原理与实践》是一份深度探讨Ice框架的宝贵资源,对于初学者和有经验的开发者来说都是绝佳的学习材料。Ice,全称为“Internet Communication Engine”,是一种高性能、跨平台的分布式对象中间件,它提供...
平台编译环境:VS2017 ICE版本:3.7.7 ICEbuilder:5.0.9 源码中有两套程序: Server:启动服务器,等待连接 。连接后可双方通信 Client:连接服务器,与服务器通讯。 Slice: 手写几个接口即可。
总的来说,"ICE通信范例"是一个学习如何在VC++中使用ICE进行分布式通信的好起点。通过理解ICE的基本原理,掌握动态库的封装技巧,以及熟悉VC++的项目配置,开发者可以有效地构建基于ICE的分布式系统。对于初学者,...
Linux平台下的ICE(Internet Communication Engine)通信中间件是一款高效、灵活且可扩展的软件框架,专为构建分布式系统而设计。ICE支持多种编程语言,包括C++、Java、Python、Ruby等,使得开发者可以根据项目需求...
ZeroICE通信框架技术介绍,开发介绍,例子介绍
《ICE 3.6.3在Eclipse环境下的通信演示》 ICE(Internet Communication Engine)是一种高性能、跨平台的中间件,它提供了基于对象和组件的分布式计算模型,支持多种编程语言,包括Java。ICE 3.6.3是其一个版本,...
### ICE通信Demo文档知识点解析 #### 一、安装ICE生成工具 为了开始ICE通信的开发,首先需要安装必要的工具。具体包括以下三个安装包: 1. **Ice-3.4.2.msi**:这是ICE核心组件的安装包,包含了ICE的基本运行环境。...
ICE全称Internet Communications Engine,即互联网通信引擎,是一种用于开发分布式计算应用的强大工具。本文档主要围绕ICE环境配置、ICE开发和ICE基础概念等几个方面展开。 在环境配置方面,文档提供了Ice源码包...
ICE的学习曲线比较短,很容易上手只要你熟悉某一种语言(例如C++或Java),了解了ICE编程范式之后,很快就能开发出实际的应用。ICE提供了一种在网络带宽、内存使用和CPU开销方面都很高效的实现。同时,ICE还提供了一...
【快速使用ICE建立通信】是关于使用ICE (Internet Communications Engine) 框架进行通信的基础教程。ICE是一种高性能、跨平台的中间件,用于构建分布式系统。以下将详细阐述如何快速建立ICE通信连接。 首先,我们...
"Ice双向通信"是指在Ice框架下实现的客户端与服务器之间的双向通信机制,这种机制使得双方都能主动发送消息,而不仅仅是单向的数据流。 在Ice连接中,有两种基本的通信模式:同步和异步。同步通信模式下,客户端...
【Ice通信框架的基础结构】 Ice通信框架,全称为Internet Communications Engine,是一款强大的、高性能的中间件,设计用于...对于希望学习ICE通信编程的开发者,理解并掌握其基础结构将对提升项目实施能力大有裨益。
在文档中,你可能会学习到如何配置ICE环境,创建ICE服务器和客户端,以及如何利用ICE的接口进行数据传输和对象间通信。此外,它还会涵盖错误处理、性能优化和调试技巧等高级主题。 《ICEFORC++.pdf》可能是一本专门...
Ice是由ZeroC公司开发的一种中间件,它的全称是“Internet Communication Engine”,即互联网通信引擎。它提供了多种语言的绑定,包括C++、Java、Python等,使得开发者可以在不同的编程语言之间进行无缝通信。Ice的...