欢迎来到天天文库
浏览记录
ID:32317422
大小:702.60 KB
页数:43页
时间:2019-02-03
《ICE for Java开发指南》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、ICEForJava开发指南Leader精品充电系列丛书,淘宝官网:http://shop113755760.taobao.com/有大量高质量学习代码可供下载,技术交流QQ:719867650前言ICE版本为3.5.1,开发环境为Java7+Eclipse,开发环境准备如下:·安装JDK7+Ecliplse·安装ICEWindows版本:http://www.zeroc.com/download/Ice/3.5/Ice-3.5.1-2.msi·安装ICEforEclipse插件:http://www.
2、zeroc.com/eclipse.html,注意ZeroICE的Home路径,eclipse->windows-Preference里Slice2Java:·Helloworld程序为了快速掌握ICE的编程特性,让我们从最基础的HelloWorld程序开始,我们定义一个服务,取名为在线订票OnlineBook,该服务提供一个方法bookTick,实现订票功能,此方法需要一个参数,包括所订票的名称(name),如变形金刚5、票的类型(type),如电影票、价格(price)、客户定制要求(content
3、)、若票源暂时紧张也预订成功(valid=true)等,为此我们封装为JavaBean,名称为Message,如下定义:publicclassMessage{publicStringname;publicinttype;publicbooleanvalid;publicdoubleprice;publicStringcontent;}若你细心点,会发现这个结构包括了大多数我们常用的数据类型:字符串、整型、布尔值、小数,这样做的原因很简单,为了验证多语言情况下的接口兼容问题。我们定义的订票服务的接口如下:
4、publicinterfaceOnlineBooK{MessagebookTick(Messagemsg)}该服务返回一个Message对象,这么做的原因是因为绝大多数方法调用都会有返回值,对于RPC调用来说,有返回值的调用代表着RPC方法调用是否成功,而没有返回值的调用,则无法确定是否成功,因为消息发出去也可能在服务端无法处理,另外,只有对有返回值的RPC方法进行性能测试,才是有代表性的结果。上面这个简单的HellowWorld的程序设计,正好体现了编程中的经验和思考的重要性。理解了上述订票服务的接口
5、、数据结构,我们接下来看看怎样用ICE将它变成神奇的RPC调用,为了解决跨语言问题,ICE中采用了业界通常的标准做法,即用一个“中立”的语法定义文件来定义RPC方法接口,并提供工具编译为各种第三方语言的接口,这个中立语法就是ICE设计的slice语言,后缀名为ice,用slice语言定义我们的订票服务,就变成了如下的方式:[["java:package:com.hp.tel.ice"]]modulebook{structMessage{stringname;inttype;boolvalid;doubl
6、eprice;stringcontent;};interfaceOnlineBook{MessagebookTick(Messagemsg);};};第一行,是特定含义的注释,告诉Java的slice转换器,转化为Java代码的时候,上述接口是在com.hp.tel.ice下产生代码。module关键字定义了本接口的模块名字module,这个module在Java中就是package的一部分,在其他语言中也有对于的概念。struct关键字定义了一个结构体,来自C的概念,注意是struct不能嵌套stru
7、ct。Interface关键字则定义了RPC服务和相关接口。从上面的定义来看,slice语言还是很简单清晰,基本上你只要花费半天时间,就能覆盖90%以上的工作需求。ICE提供了从slice到大多数主流语言的转化工具,命名为slice2XXX,比如slice2java、slice2cplus、slice2py、slice2php、slice2rb、在ICE的安装目录的bin下,你可以看到上述这些命令。可以通过命令行执行slice接口到其他语言的转化,生成相应的代码:slice2javaxxx.ice现在让
8、我们开始正式编程吧,打开Eclilpse,建立一个普通的Java工程:点击工程的右键菜单,选择slice2java子菜单,执行”addslice2javabuilder”,添加slice2javabuilder之后,项目自动产生了两个文件夹,slice目录存放slice文件、generated目录存放生成的java源文件,同时项目也添加了ICE依赖库(IceLibrary),ICE依赖库只有一个:ICE.jar,没有复杂的第三方包,容易集成
此文档下载收益归作者所有