ZeroC Ice权威指南-学习笔记1——hello world
前言
ZeroC Ice是一款很好的RPC框架,性能极好。但是参考文档不足是其一大问题,这也影响了它的传播。《ZeroC Ice权威指南》是唯一的中文教材,但写的不尽如人意,作为入门教材,啃着有点费劲。本系列博客就是学习这本教材的学习笔记,可以作为有需要的同学的辅助参考材料。其中主要是实操类的流程介绍,由于书中的ice版本比较老,和比较新的ice版本有不少使用上的差异,本系列博客使用的是ICE3.7.2,按照书中的步骤,会遇到不少的坑,所以整理了一些学习笔记。
但是!学习了一段时间发现,我所在的公司在逐步弃用ice,原因是它在超时时间处理、排查问题等方面相比http接口不太方便。所以这本书我只看了一半,并没有继续深入。因为我一直认为最好的学习是深入学习自己能经常接触的东西,这样可以实践、理论两条腿相辅相成的往前走(在实践中思考理论,在理论中思考实践)。一味的学习书本知识点,没有真实案例的巩固,很难深入一块知识,过一段时间就会遗忘。可考虑到我已经花了很多时间整理了笔记,不想浪费。在ice中文资料匮乏的互联网中,能贡献一点力量也是好的,所以我就把学习笔记直接作为博客内容了。虽然只是比较肤浅的笔记,并没有像其他博客一样做自己的深入思考和排版整理,但也能帮助需要的同学扫除一些入门的阅读以及实操障碍。
再多说一句:虽然我们公司在弃用ice,但并不代表ice不好(事实上ice非常优秀)。大部分框架软件,只有合不合适,没有太多好坏之分。学习一个软件框架就像学英语时阅读一篇英文文章或小说,它不能让你在写英语作文的时候直接照搬照抄,但在深入理解一篇文章后,可以汲取很多大师优秀的设计方法,提升写文章的水平。
Demo
本系列博客写的很粗糙,也没检查排版过,所以肯定有很多文字表达问题,下面是相关demo,可以帮助大家更好的理解。
代码
使用eclipse搭建ICE project搭建
- 安装ice插件(书中有介绍)
- 新建java project
- 右键项目:Ice Builder ——> Add Ice Builder 【和书中的版本不太一样】
多出一个文件夹generated
按照Ice的项目目录约定,还需要增加一个slice文件夹
右键项目,新增文件夹slice(不用新建package)
如果eclipse的Ice插件工作正常,新建完该文件夹,在控制台就会打印出,一段信息,表示插件在你创建完目录后就尝试”编译“slice文件内的文件了。
- 写一个最简单的Ice 客户端、服务端通讯的demo
在slice文件夹内新增slice文件myservice.ice 【见附件】
当保存文件时候,就会发现,插件自动根据这个文件在生产了对应的java代码
可惜java代码有报错,原因是:没有引用ICE的jar包
此时可以建一个lib目录,来放jar包,不过这里选择使用maven自动下载jar包,而不是去网上搜。
右键项目,把项目转成maven项目:
在pom.xml中增加依赖包
如果maven配置的没问题,就会自动下载ice的jar包,还有自动生产的代码也将会不再报错
这里可以简单观察一下大功告成的第一步骤的项目
ice经过多年的发展重构,已经将自动生成的代码简化了很多,书上的版本会产生十几个文件,现在这个版本3.7.2已经简化到3个文件, 主要是两个接口:MyServicePrx.java
这个是客户端使用的,而MyService.java是服务端使用的,Ice底层就负责这两个接口之间的数据交互。写服务端核心业务逻辑代码
这个类名随便,只需要实现服务端的核心接口即可,然后把具体的服务代码写入方法中。
由于上面只是我们的纯业务实现。并没有main方法,无法把服务端代码跑起来,所以下面写把服务端跑起来的启动类。
跑一下试试
至此: 一个对外提供接口的服务端就完成了!
服务名为HelloIce, ip就是当前这台机器的默认地址,端口为1888
等待客户端的访问。。。
- 写客户端启动类及访问代码
启动客户端,访问服务端接口
至此:通过eclipse,我们的Ice的Hello World程序就完成了!
ZeroC Ice权威指南-学习笔记1——hello world相关推荐
- ZeroC Ice权威指南-学习笔记2——IceBox
另外写一个稍微复杂一点的调用过程 按照书本上的slice[为了更清晰,这里把文件名字改为onlinebook.ice] 保存之后,ice插件就为我们自动创建了对应的java代码 给项目增加logbac ...
- 《ZeroC Ice 权威指南》笔记
Ice介绍 Ice(Internet Communications Engine)是ZeroC公司的杰作,继承了CORBA的血统,是新一代的面向对象的分布式系统中间件.Ice是RPC通讯领域里最稳定. ...
- JavaScript 权威指南-学习笔记(一)
本文所有教程及源码.软件仅为技术研究.不涉及计算机信息系统功能的删除.修改.增加.干扰,更不会影响计算机信息系统的正常运行.不得将代码用于非法用途,如侵立删! JavaScript 权威指南-学习笔记 ...
- Hadoop权威指南学习笔记三
HDFS简单介绍 声明:本文是本人基于Hadoop权威指南学习的一些个人理解和笔记,仅供学习參考.有什么不到之处还望指出,一起学习一起进步. 转载请注明:http://blog.csdn.net/my ...
- Hadoop权威指南学习笔记一
Hadoop简单介绍 声明:本文是本人基于Hadoop权威指南学习的一些个人理解和笔记,仅供学习參考,有什么不到之处还望指出.一起学习一起进步. 转载请注明:http://blog.csdn.net/ ...
- Javascript权威指南学习笔记一:数据类型
决定从最基础的开始学JavaScript,最近看了<<Javascript权威指南>>第3章,记些笔记备忘. 本章一个重点是类型.按我的理解应该如下表所示: 复合类型中,关联数 ...
- netty权威指南 学习笔记http
序 李林峰的<netty权威指南>,从Java的NIO开始介绍,后面介绍TCP粘包拆包.中级篇介绍编解码技术. 第10章介绍了HTTP及netty HTTP+XML的技术. 因为xml实际 ...
- maven 一个简单项目 —— maven权威指南学习笔记(三)
目标: 对构建生命周期 (build lifecycle),Maven仓库 (repositories),依赖管理 (dependency management)和项目对象模型 (Project O ...
- javascript权威指南 学习笔记之变量作用域
最近一直在看<javascript权威指南 第五版>,变量作用域这一章,看得真的有点累.不过,收获还是多多. 不知道,大家对语言中变量的"声明"与"定义&qu ...
最新文章
- 58金融产品经理董宁:互金产品设计21问
- SSM整合——Spring+SpringMVC+MyBatis整合
- [转载] Python数据分析与可视化学习笔记(一)数据分析与可视化概述
- 切断数据感知控件,大大提升软件运行速度
- 常用数据库及表相关操作语句
- w7电脑蓝屏怎么解决_为你解答win7电脑蓝屏怎么办
- 手机“入殓师”,你之前有听过吗?
- OpenCV Mat::ones()用法及注意事项
- Windows系统下GIT生成密钥和添加密钥git
- CF513C Maximum Subrectangle
- 从头开始绘制一个圆锥体
- 怎样能让大腿变细方法 揭秘如何瘦大腿和小腿
- Oracle 字段自增
- Android音频子系统(十)------MTK Audio录音流程代码解析
- 线程wait和notify方法
- 深信服虚拟服务器断断续续的,深信服防火墙AF做双机时虚拟MAC问题的处理办法...
- 怎样营造线上购物氛围-纽黑文教育
- 叶问[Ip Man]
- qt 容器组控件 Containers
- 新房装修|厨房台面给我做高了10公分,做饭不方便