`
guojianhui0906
  • 浏览: 47955 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

理解Android系统的进程间通信原理(一)----RPC中的代理模式

阅读更多
[size=medium]理解Android系统的进程间通信原理(一)----RPC中的代理模式
Android系统中的进程间通信是通过一个轻量级的RPC(Remote Procedure Call远程进程调用)和AIDL(Android Interface Definination Language)规范来生成两个进程之间可以相互访问的代码。其中RPC是以接口方式来实现,客户端与被调用实现之间是通过代理模式来实现的,这些又是以JAVA的RMI和代理模式为理论基础的,若要灵活掌握这个轻量级的解决方案,有必要重新理顺这些基础知识的,这里我们先了解代理模式的相关基础,
有关代理模式的知识,可以用下面这个思维导图来表示:


这里以一个代码实例来说明实际运用:
1、抽象类Role代码

1 package com.magc.proxy;
2
3 /**
4 * @author magc
5 *代理角色和真实角色的共同抽象类
6 */
7 public abstract class Role {
8
9 //作为代理角色和真实角色的共同接口,方便代理角色对外代替真实角色来提供服务
10 public abstract void service(String user_id);
11
12 }

2、真实角色类RealRole代码

1 package com.magc.proxy;
2
3 /**
4 * @author magc
5 * 真实角色类
6 * 对外是不可访问
7 *
8 */
9 public class RealRole extends Role {
10
11 /* (non-Javadoc)
12 * @see com.magc.proxy.Role#service()
13 * 提供服务
14 */
15 @Override
16 public void service(String user_id) {
17 System.out.println("真实角色为你服务……");
18 }
19 //验证用户身份
20 public boolean CheckUser(String user_id)
21 {
22 return true;
23 }
24
25 }


3、代理类ProxyRole代码:

1 package com.magc.proxy;
2
3 /**
4 * @author magc
5 * 代理角色类
6 * 对客户端开发其接口
7 * 内部可以直接引用真实角色实例,将客户端的请求转给真实角色实例
8 * 对转发请求的前或者后面可以增加一些额外操作
9 */
10 public class ProxyRole extends Role {
11 private RealRole realrole = null;
12
13 /* (non-Javadoc)
14 * @see com.magc.proxy.Role#service()
15 */
16 @Override
17 public void service(String user_id) {
18 System.out.println("代理角色为你服务……");
19 //需要时才去创建真实角色实例
20 realrole = new RealRole();
21 //增加额外操作:验证身份
22 System.out.println("验证身份……");
23 if(!realrole.CheckUser(user_id))
24 return;
25 System.out.println("去找真实角色实例帮忙处理事务……");
26 realrole.service("magc");
27
28 System.out.println("谢谢光临……");
29 }
30
31 }


4、测试类RoleTest类代码

1 package com.magc.proxy;
2
3 /**
4 * @author magc
5 * 代理模式测试类
6 * 作为客户端去请求调用代理类的接口。
7 * 客户端只能访问代理类,而不能访问真实角色类
8 */
9 public class ProxyTest {
10
11 /**
12 * @param args
13 */
14 public static void main(String[] args) {
15
16 ProxyRole proxy = new ProxyRole();
17 proxy.service("magc");
18 }
19
20 }
分享到:
评论

相关推荐

    Android进程间通信-Binder机制详解

    在Android系统中,进程间通信(IPC,Inter-Process Communication)是实现不同应用程序组件协同工作的关键。Binder机制是Android独有的IPC方式,它不同于传统的Unix/Linux进程间通信机制,如管道、信号、共享内存等...

    android aidl 不同进程间通信

    在Android系统中,进程间通信(IPC,Inter-Process Communication)是实现不同应用程序之间数据交换的关键技术。Android Aidl(Android Interface Definition Language)是Android提供的一种强大的IPC机制,它允许两...

    android-json-rpc

    1. **简单易用的API**:android-json-rpc提供了一个直观且易于理解的API,使得开发者能够快速地集成到项目中,进行JSON-RPC的调用。通过创建一个`JsonRpcClient`实例,然后调用其`call`方法,可以方便地发送请求并...

    VC进程间通信方法-- 文档

    进程间通信(IPC, Inter-Process Communication)是计算机科学中一个重要的概念,特别是在多任务和分布式系统中。在VC++环境下,实现进程间通信的方法多种多样,每种方法都有其适用的场景和优缺点。本文将详细介绍...

    基于java的开发源码-高性能RPC框架 nfs-rpc.zip

    基于java的开发源码-高性能RPC框架 nfs-rpc.zip 基于java的开发源码-高性能RPC框架 nfs-rpc.zip 基于java的开发源码-高性能RPC框架 nfs-rpc.zip 基于java的开发源码-高性能RPC框架 nfs-rpc.zip 基于java的开发源码-...

    LabVIEW XML-RPC

    LabVIEW XML-RPC 是一种基于XML的远程过程调用(RPC)技术,它允许LabVIEW应用程序与其他支持XML-RPC协议的系统进行通信。这个技术在跨平台交互和分布式系统开发中发挥着重要作用,使得LabVIEW可以与不同编程语言...

    main-tcp-server--client-with-3-server-rpc.rar_rpc_tcp server_tcp

    在IT行业中,网络通信是至关重要的一个领域,而RPC(Remote Procedure Call)和TCP服务器/客户端模型则是其中的基石。本项目"main-tcp-server--client-with-3-server-rpc.rar_rpc_tcp server_tcp"旨在展示如何使用...

    UNIX网络编程_卷2_进程间通信

    管道是最早用于UNIX系统进程间通信的机制,它允许两个进程进行单向通信。FIFO则在此基础上进行了扩展,允许在无亲缘关系的进程间进行数据交换。消息队列则是一个更为复杂的通信机制,它允许在不同进程间存储和传递...

    android RPC原理总结及源码

    在Android系统中,RPC(Remote Procedure Call)是一种用于应用程序间通信的重要技术,它允许一个程序调用另一个在不同进程中运行的程序的方法,就像调用本地方法一样。本篇文章将深入探讨Android中的RPC原理,特别...

    前端开源库-node-express-json-rpc2-async

    7. **前端与后端通信**:这个开源库可能帮助前端应用通过JSON-RPC 2.0协议与Node.js后端进行通信,实现数据的获取、提交等操作,提升前后端解耦和通信效率。 通过学习和使用这个开源库,前端开发者可以更高效地与...

    jsonrpc-c-master 基于 json rpc 1.0 纯C开发的服务端代码和示例

    基于JSON-RPC 1.0的C语言实现,如"jsonrpc-c-master",提供了一种在C语言环境中构建服务端应用的方法,尤其适用于嵌入式系统或对性能有严格要求的环境。 **JSON-RPC 1.0协议基础** JSON-RPC 1.0是一个简单的请求/...

    Android进程间的通信AIDL实例

    在Android系统中,进程间的通信(Inter-Process Communication, 简称IPC)是一项重要的技术,使得不同应用程序之间能够共享数据和服务。AIDL(Android Interface Definition Language)是Android提供的一种强大的...

    rpc-sofa-boot-starter将SOFARPC功能集成到SOFABoot中

    SOFABoot 是一个完全兼容 SpringBoot 的开发框架,rpc-sofa-boot-starter 的作用就是将 SOFARPC 功能集成到 SOFABoot 中。rpc-sofa-boot-starter 提供了统一方便的编程界面、配置方式,同时提供了 SOFABoot 的健康...

    Windows 下的进程间通信

    在Windows操作系统中,进程间通信(Inter-Process Communication, IPC)是一种允许不同进程之间交换数据和协调工作的技术。它是多任务环境下程序设计的关键部分,使得应用程序可以共享资源、协同工作,甚至实现...

    Linux运维-4.服务管理-006NFS-2视频-066工作原理-NFS和RPC.avi

    Linux运维-4.服务管理-006NFS-2视频-066工作原理-NFS和RPC.avi

    oncrpc.rar_RPC. VC++_oncrpc windows_windows RPC_ycnian的博客

    RPC(Remote Procedure Call)是一种分布式计算技术,允许一个程序在一台计算机上执行远程操作,就像它在本地执行一样...通过学习和实践,开发者可以更好地掌握分布式系统中的跨进程通信,提升软件的可扩展性和可靠性。

    rpc.rstatd-4.0.1.tar.gz

    linux使用,使用教程 linux下安装rpc.rstatd 1.rpc服务需rsh的支持,一般情况下rsh已安装。rpm -qa rsh查看。 2.右键另存为http://heanet.dl.sourceforge.net/sourceforge/rstatd/rpc.rstatd-4.0.1.tar.gz下载rpc....

    进程间通信之共享内存C#源代码

    在C#中,有多种进程间通信(Inter-Process Communication,IPC)的技术。以下是一些主要的通信方式: 1.命名管道(Named Pipes) 2.套接字(Sockets) 3.共享内存(Shared Memory) 4.信号量(Semaphore) 5.消息...

Global site tag (gtag.js) - Google Analytics