zoukankan      html  css  js  c++  java
  • Python 实现RMI

    什么是RMI :远程方法调用,通过对象序列化,代理模式,在本地调用远程的方法或者和函数的方式,在JAVA或Python 中都有其具体的解决方式。

    先看图 :

       看看方法调用是如何发生的 :借鉴Head First 设计模式中对RMI的实现方式。

      

      
     
     
     
     
     
     
     
    基本的介绍也就这些了。
    先看看使用JAVA 来制作远程服务
    Step一:  制作远程接口
     
    JAVA
    1 import java.rmi.* ;
    2 
    3 //扩展JAVA.RMI.REMOTE接口
    4 public interface MyRemote extends Remote {
    5     //远程调用一定会抛出异常,RemoteException
    6     //确定变量和返回值是属于原语(primitive)类型或者可序列化
    7     //String 是可序列化类型
    8     public String sayHello() throws RemoteException;
    9 }

    Step二: 制作远程实现,也就是说远程服务的实现

    Remote Service
    //UnicastRemoteObject 帮助我们实现了某些功能
    public class MyRemoteImpl extends UnicastRemoteObject implements MyRemote{
        public String sayHello(){
            return "Server says ,'Hey!'";
        }
        //必须声明的空的构造函数,意味这你的构造器正在调用不安全的代码
        public MyRemoteImpl() throws RemoteException{}
    
        public static void main(String[] args){
            try{
                MyRemote service = new MyRemoteImpl();
                Naming.rebind("RemoteHello",service);
    
            }catch(Exception ex){
                ex.printStackTrace();
            }
    
        }
    }

    Step三: 产生Stub 和 Skeleton

    其中S tub 是对象是客户端必须找到的对象

    Step四: Stub 在RMI服务器端进行注册 使用RMI Register 进行注册

    Step五:启动 远程服务,也就是在一个线程中启动Remote Service。

    这样服务器端的所有准备工作完成。

    再来看看客户端的代码是如何实现。

    Step一:客户端在Register中寻找stub代理的代码

    Step二:Register返回该Stub的对象

    Step三:客户端就像调用真正的Stub 对象一样调用该段代码

    Client
    client :
    import java.rmi.* 
    
    public class MyRemoteClient(){
        public void main(string[] args){
            new MyRemoteClent.go();    
    
        }
    
    
        public void go(){
            MyRemote service=(MyRmote)Naming.lookup("rmi://127.0.0.1/RemoteHello");
            service.sayHello();
            
        }
    
    } 
     
     
     
     
  • 相关阅读:
    dev GridControl 代码自定义下拉框
    字符串utf-8相互转换
    .net 相关
    dev grid 样式
    winform 重置快捷写法
    winform 代码定义事件
    winform设置默认打印机
    可为空的对象必须具有一个值
    js获取当前日期之前或之后数据
    sql 快捷方法使用
  • 原文地址:https://www.cnblogs.com/jerryxing/p/2874262.html
Copyright © 2011-2022 走看看