前言

ZeroC Ice是一款很好的RPC框架,性能极好。但是参考文档不足是其一大问题,这也影响了它的传播。《ZeroC Ice权威指南》是唯一的中文教材,但写的不尽如人意,作为入门教材,啃着有点费劲。本系列博客就是学习这本教材的学习笔记,可以作为有需要的同学的辅助参考材料。其中主要是实操类的流程介绍,由于书中的ice版本比较老,和比较新的ice版本有不少使用上的差异,本系列博客使用的是ICE3.7.2,按照书中的步骤,会遇到不少的坑,所以整理了一些学习笔记。
但是!学习了一段时间发现,我所在的公司在逐步弃用ice,原因是它在超时时间处理、排查问题等方面相比http接口不太方便。所以这本书我只看了一半,并没有继续深入。因为我一直认为最好的学习是深入学习自己能经常接触的东西,这样可以实践、理论两条腿相辅相成的往前走(在实践中思考理论,在理论中思考实践)。一味的学习书本知识点,没有真实案例的巩固,很难深入一块知识,过一段时间就会遗忘。可考虑到我已经花了很多时间整理了笔记,不想浪费。在ice中文资料匮乏的互联网中,能贡献一点力量也是好的,所以我就把学习笔记直接作为博客内容了。虽然只是比较肤浅的笔记,并没有像其他博客一样做自己的深入思考和排版整理,但也能帮助需要的同学扫除一些入门的阅读以及实操障碍。
再多说一句:虽然我们公司在弃用ice,但并不代表ice不好(事实上ice非常优秀)。大部分框架软件,只有合不合适,没有太多好坏之分。学习一个软件框架就像学英语时阅读一篇英文文章或小说,它不能让你在写英语作文的时候直接照搬照抄,但在深入理解一篇文章后,可以汲取很多大师优秀的设计方法,提升写文章的水平。

Demo

本系列博客写的很粗糙,也没检查排版过,所以肯定有很多文字表达问题,下面是相关demo,可以帮助大家更好的理解。
代码

使用eclipse搭建ICE project搭建

  1. 安装ice插件(书中有介绍)
  2. 新建java project
  3. 右键项目:Ice Builder ——> Add Ice Builder 【和书中的版本不太一样】

多出一个文件夹generated

按照Ice的项目目录约定,还需要增加一个slice文件夹
右键项目,新增文件夹slice(不用新建package)

如果eclipse的Ice插件工作正常,新建完该文件夹,在控制台就会打印出,一段信息,表示插件在你创建完目录后就尝试”编译“slice文件内的文件了。

  1. 写一个最简单的Ice 客户端、服务端通讯的demo
    在slice文件夹内新增slice文件myservice.ice 【见附件】
    当保存文件时候,就会发现,插件自动根据这个文件在生产了对应的java代码

可惜java代码有报错,原因是:没有引用ICE的jar包
此时可以建一个lib目录,来放jar包,不过这里选择使用maven自动下载jar包,而不是去网上搜。
右键项目,把项目转成maven项目:

在pom.xml中增加依赖包

如果maven配置的没问题,就会自动下载ice的jar包,还有自动生产的代码也将会不再报错

  1. 这里可以简单观察一下大功告成的第一步骤的项目
    ice经过多年的发展重构,已经将自动生成的代码简化了很多,书上的版本会产生十几个文件,现在这个版本3.7.2已经简化到3个文件, 主要是两个接口:MyServicePrx.java
    这个是客户端使用的,而MyService.java是服务端使用的,Ice底层就负责这两个接口之间的数据交互。

  2. 写服务端核心业务逻辑代码
    这个类名随便,只需要实现服务端的核心接口即可,然后把具体的服务代码写入方法中。

  3. 由于上面只是我们的纯业务实现。并没有main方法,无法把服务端代码跑起来,所以下面写把服务端跑起来的启动类。

跑一下试试

至此: 一个对外提供接口的服务端就完成了!
服务名为HelloIce, ip就是当前这台机器的默认地址,端口为1888
等待客户端的访问。。。

  1. 写客户端启动类及访问代码

启动客户端,访问服务端接口

至此:通过eclipse,我们的Ice的Hello World程序就完成了!

ZeroC Ice权威指南-学习笔记1——hello world相关推荐

  1. ZeroC Ice权威指南-学习笔记2——IceBox

    另外写一个稍微复杂一点的调用过程 按照书本上的slice[为了更清晰,这里把文件名字改为onlinebook.ice] 保存之后,ice插件就为我们自动创建了对应的java代码 给项目增加logbac ...

  2. 《ZeroC Ice 权威指南》笔记

    Ice介绍 Ice(Internet Communications Engine)是ZeroC公司的杰作,继承了CORBA的血统,是新一代的面向对象的分布式系统中间件.Ice是RPC通讯领域里最稳定. ...

  3. JavaScript 权威指南-学习笔记(一)

    本文所有教程及源码.软件仅为技术研究.不涉及计算机信息系统功能的删除.修改.增加.干扰,更不会影响计算机信息系统的正常运行.不得将代码用于非法用途,如侵立删! JavaScript 权威指南-学习笔记 ...

  4. Hadoop权威指南学习笔记三

    HDFS简单介绍 声明:本文是本人基于Hadoop权威指南学习的一些个人理解和笔记,仅供学习參考.有什么不到之处还望指出,一起学习一起进步. 转载请注明:http://blog.csdn.net/my ...

  5. Hadoop权威指南学习笔记一

    Hadoop简单介绍 声明:本文是本人基于Hadoop权威指南学习的一些个人理解和笔记,仅供学习參考,有什么不到之处还望指出.一起学习一起进步. 转载请注明:http://blog.csdn.net/ ...

  6. Javascript权威指南学习笔记一:数据类型

    决定从最基础的开始学JavaScript,最近看了<<Javascript权威指南>>第3章,记些笔记备忘. 本章一个重点是类型.按我的理解应该如下表所示: 复合类型中,关联数 ...

  7. netty权威指南 学习笔记http

    序 李林峰的<netty权威指南>,从Java的NIO开始介绍,后面介绍TCP粘包拆包.中级篇介绍编解码技术. 第10章介绍了HTTP及netty HTTP+XML的技术. 因为xml实际 ...

  8. maven 一个简单项目 —— maven权威指南学习笔记(三)

    目标: 对构建生命周期 (build  lifecycle),Maven仓库 (repositories),依赖管理 (dependency management)和项目对象模型 (Project O ...

  9. javascript权威指南 学习笔记之变量作用域

    最近一直在看<javascript权威指南 第五版>,变量作用域这一章,看得真的有点累.不过,收获还是多多. 不知道,大家对语言中变量的"声明"与"定义&qu ...

最新文章

  1. 58金融产品经理董宁:互金产品设计21问
  2. SSM整合——Spring+SpringMVC+MyBatis整合
  3. [转载] Python数据分析与可视化学习笔记(一)数据分析与可视化概述
  4. 切断数据感知控件,大大提升软件运行速度
  5. 常用数据库及表相关操作语句
  6. w7电脑蓝屏怎么解决_为你解答win7电脑蓝屏怎么办
  7. 手机“入殓师”,你之前有听过吗?
  8. OpenCV Mat::ones()用法及注意事项
  9. Windows系统下GIT生成密钥和添加密钥git
  10. CF513C Maximum Subrectangle
  11. 从头开始绘制一个圆锥体
  12. 怎样能让大腿变细方法 揭秘如何瘦大腿和小腿
  13. Oracle 字段自增
  14. Android音频子系统(十)------MTK Audio录音流程代码解析
  15. 线程wait和notify方法
  16. 深信服虚拟服务器断断续续的,深信服防火墙AF做双机时虚拟MAC问题的处理办法...
  17. 怎样营造线上购物氛围-纽黑文教育
  18. 叶问[Ip Man]
  19. qt 容器组控件 Containers
  20. 新房装修|厨房台面给我做高了10公分,做饭不方便

热门文章

  1. 数字化平台全面护航金融信创落地 | 信创讲坛第一期
  2. 计算机弹奏蔡徐坤,用了多年键盘才发现,CTRL键跟蔡徐坤有关,细思极恐!
  3. 高德地图海量点加载自定义fonticon,canvas绘制fonticon
  4. 文本分类方案,飞浆PaddleNLP涵盖了所有
  5. 苹果PDF压缩工具:PDF Squeezer
  6. SDK设计心得之接口设计
  7. Java操作Excel的两种方式(详细)
  8. 【IoT】13.Disruptive Innovation 开拓式创新
  9. 热议!放弃985大学副教授教职,北大博士后从政任区长!
  10. CORS请求未能成功