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