zoukankan      html  css  js  c++  java
  • ZeroC ICE的远程调用框架 Slice如何帮助我们进行Ice异步编程(AMI,AMD)

    Slice最大的用处就是为我们使用Ice进行编程,代劳绝大部分的重复性代码,并提供一些帮助性的框架代码,如用于AMI和AMD方式进行异步编程的回调框架。

    当Slice不为我们生成代码时,我们仍然可以按照Ice规范进行开发,但重复性细节代码很多。我们在进行一次远程调用时,调用方和执行方必要的代码如下:

    Slice为我们生成的AMI 异步方法调用的回调框架代码有:

    我们在使用AMD 异步方法调度(分派)进行对象的后端编程时,使用到的回调框架代码,Slice为我们生成的代码:

    Slice只是为我们提供了回调的框架,帮我们打包了回调操作,但并没有使我们的调用或分派调度直接变成异步,调用或分派调度如何异步还是要我们自己进行编程。

    更多AMI 和 AMD 回调详细请参看前面的篇

    ZeroC ICE的远程调用框架 Callback(一)-AMI异步方法调用框架

    ZeroC ICE的远程调用框架 AMI与AMD -Why?

    看了Slice生成的c++代码,再比较一下Slice在java中如何帮助进行AMD编程:

        void op(com.zeroc.Ice.Current current);

        java.util.concurrent.CompletionStage<Void> opAMDAsync(com.zeroc.Ice.Current current);

       static java.util.concurrent.CompletionStage<com.zeroc.Ice.OutputStream> _iceD_op(Intf obj, final com.zeroc.IceInternal.Incoming inS, com.zeroc.Ice.Current current)
        {
            com.zeroc.Ice.Object._iceCheckMode(null, current.mode);
            inS.readEmptyParams();
            obj.op(current);
            return inS.setResult(inS.writeEmptyParams());
        }
    
        static java.util.concurrent.CompletionStage<com.zeroc.Ice.OutputStream> _iceD_opAMD(Intf obj, final com.zeroc.IceInternal.Incoming inS, com.zeroc.Ice.Current current)
        {
            com.zeroc.Ice.Object._iceCheckMode(null, current.mode);
            inS.readEmptyParams();
            return inS.setResultFuture(obj.opAMDAsync(current));
        }

    Slice在java中直接使用了ResultFuture。

    再来看一下python:

            def op(self, current=None):
                pass
    
            def opAMD(self, current=None):
                pass

    Slice根本不会为python语言生成额外的AMD相关的代码,你必须在方法的实现体中自行使用Ice.Future。

  • 相关阅读:
    linux下挂载硬盘出错的解决方法
    linux下解压缩文件中文乱码问题的解决
    VLC播放器的快捷键(shutcut)
    PGSQL 日期时间的比较
    PGSQL 字符串作为查询参数的处理
    pqsql 防注入
    js字符数组转化为数字数组
    js去除字符串的前后空白
    使用gravatar生成头像
    js删除数组的某个元素
  • 原文地址:https://www.cnblogs.com/bbqzsl/p/6612102.html
Copyright © 2011-2022 走看看