随笔-86  评论-12  文章-0 
  2017年3月24日
摘要: Slice最大的用处就是为我们使用Ice进行编程,代劳绝大部分的重复性代码,并提供一些帮助性的框架代码,如用于AMI和AMD方式进行异步编程的回调框架。 当Slice不为我们生成代码时,我们仍然可以按照Ice规范进行开发,但重复性细节代码很多。我们在进行一次远程调用时,调用方和执行方必要的代码如下:阅读全文
posted @ 2017-03-24 16:25 bbqz007 阅读(0) 评论(0) 编辑
  2017年3月23日
摘要: ASM与defaultServant,ServantLocator都是与调用调度(Dispatch)相关的。 ASM是ServantManager中的一张二维表_servantMapMap,默认Servant则由_defaultServantMap和_locatorMap两张一维表维护。一个对 象可阅读全文
posted @ 2017-03-23 20:31 bbqz007 阅读(0) 评论(0) 编辑
摘要: ServantLocator定位的目标是Servant,而Locator定位的目标是“Ice Object”,即一个可定位的“Ice Object”代理。Servant是::Ice::Object的继承树的子类,是我们接口定义的实现体,充当的是"Ice Object"某面(facet)的Servan阅读全文
posted @ 2017-03-23 20:03 bbqz007 阅读(0) 评论(0) 编辑
  2017年3月21日
摘要: 在Ice有两种异步使用的方式,AMI和AMD。AMI是异步方法调用,AMD是异步方法调度(分派)。前者用在代理端,后者用在饲服实现端。 AMI其实就是在代理端,使用Future机制进行异步调用,而不阻塞等待响应结果。 AMD只是提供一种回调机制,让你可以选择返回响应的时机,不必在Skeleton调度阅读全文
posted @ 2017-03-21 20:50 bbqz007 阅读(1) 评论(0) 编辑
  2017年3月20日
摘要: Ice框架提供了不少回调设施,其中一些是使用Ice远程调用进行ami模式或amd模式的支撑。本篇来看一下用于代理端的回调设施。 Ice代码中有好几个Callback相关命名的基类,并且slice还会为你描述的接口,每个接口方法生成好几个回调类,让人眼花缭乱。其实认真整理归纳一下,就会发现,为我们提供阅读全文
posted @ 2017-03-20 20:20 bbqz007 阅读(1) 评论(0) 编辑
  2017年3月17日
摘要: 我们在ice文件中定义的class或interface,slice都会为我们生成stub存根类和skeleton骨架类。在这里要注意slice并没有分别生成两份单独用在客户端或服务端的接口给开发分发。在ice中,client和server只是相对于ice object的使用关系,client即使用代阅读全文
posted @ 2017-03-17 16:59 bbqz007 阅读(2) 评论(0) 编辑
  2017年3月16日
摘要: 继上一篇《ZeroC ICE的远程调用框架》,本篇再来说其中的AMD。(本篇需要重写) 当在ice文件中声明某个接口方法Method为["amd"]后,接口方法在stub类生成的远程调用框架代码不会变,但在skeleton类生成的就不是_iceD_Method和Method,而是_iceD_Meth阅读全文
posted @ 2017-03-16 20:43 bbqz007 阅读(1) 评论(0) 编辑
摘要: 想搞清楚slice为我们生成了什么样的框架代码,就先搞明白Ice的远程调用框架暗中为我们做了些什么? Ice将Ice Object的方法调用分为三个阶段(或步骤),分别是begin,process和end。如下图: 或者说Ice将一次完整的Ice Object方法调用划分成上面三个阶段。基于上面的划阅读全文
posted @ 2017-03-16 16:37 bbqz007 阅读(3) 评论(0) 编辑
  2017年3月14日
摘要: Ice对象的模型和概念。 Ice Object并非是我们的接口实现类的实例对象。我们的接口实现类的实例对象只是充当Ice Object的Servant的角色。一个Ice Object可以有众多Servant,并且Servant可以在不同的机器终端和网络上。Ice Object是概念层面上的对象,不是阅读全文
posted @ 2017-03-14 17:23 bbqz007 阅读(1) 评论(0) 编辑
  2017年3月13日
摘要: 在ZeroC Ice中定义了三种基本对象类型。 它们分别是IceProxy::Ice::Object(于Ice/Proxy.h),Ice::Object(于Ice/Object.h)和Ice::LocalObject(于Ice/LocalObject.h)。 这三种基本对象类型的基类都是Shared阅读全文
posted @ 2017-03-13 20:53 bbqz007 阅读(6) 评论(0) 编辑