• 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。

  • 相关阅读:
    CentOS实验六:配置EPEL软件源
    Linux 目录结构【转】
    man page中的数字
    Linux常用命令(一) 基础
    MVP大礼包写真集
    DNN单击事件只有在"编辑"状态下才有效的解决方案
    GridView导出到Excel和开源图表工具
    免费的DNN工具条
    在应用程序级别以外使用注册为 allowDefinition='MachineToApplication' 的节是错误的解决办法
    DotNetNuke 4.9.0安装完全教程
  • 原文地址:https://www.cnblogs.com/bbqzsl/p/6612102.html
Copyright © 2020-2023  润新知