ICE—互联网通信引擎的学习笔记

在开发企业应用的时候,网络通信引擎的选取是至关重要的,有些大公司往往自己独立开发网络协议以及处理socket通信,但对于中小企业来说,利用开源的网络引擎无疑会给你带来很多好处,你无须再关心繁琐的编解码以及一系列协议,也无须关心底层网络通信,你只需要关心你的业务就可以了,本文介绍的是ice网络通信引擎,其中大名鼎鼎的skype的通信协议的一部分就是采用的是它!

 

互联网通信引擎的选型我觉得有几点很重要:

 

  1. 客户端语言无关性:目前客户端采用一种语言,服务器端采用另一种高效的语言已经比较普遍,这就需要网络通信引擎具有无言无关性,ice的客户端语言可以是java,c++,.net,PHP,Python,Pascal等
  2. 性能:ICE的性能可能比不上ACE,但总体来说,尚算不错
  3. 伸缩性和扩展能力:ice支持均衡
下面偶举一个很简单的例子,利用C#在客户端向服务器发送请求,要求服务器端打印出“Hellow world”,服务器端语言采用Java,开发步骤日下:

  1. 利用slice2cs生成C#客户端接口代码,其中ice文件内容如下:
module Demo {
interface Printer {
void printString(string s);
};
};
 
    将以上文件另存为1.ice,在控制台利用:slice2cs 1.ice,生成代码
  1. 利用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);

}
 
  1. 利用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);
	}
 

测试一下吧:)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值