远程服务

android使用aidl实现进程间通信

我的未来我决定 提交于 2019-12-09 15:07:35
在 Android 中 , 每个应用程序都有自己的进程,当需要在不同的进程之间传递对象时,该如何实现呢 ? 显然 ,Java 中是不支持跨进程内存共享的。因此要传递对象 , 需要把对象解析成操作系统能够理解的数据格式 , 以达到跨界对象访问的目的。 在 JavaEE 中,采用 RMI 通过序列化传递对象。 在 Android 中 , 用 AIDL(Android Interface Definition Language :接口定义语言 ) 方式实现。 AIDL 是一种接口定义语言,用于约束两个进程间的通讯规则,供编译器生成代码,实现 Android 设备上的两个进程间通信 (IPC) 。 由于进程之间的通信信息需要双向转换,所以 android 采用代理类在背后实现了信息的双向转换 ,代理类由 android 编译器生成,对开发人员来说是透明的。 具体实现 假设 A 应用需要与 B 应用进行通信,调用 B 应用中的 download(String path) 方法, B 应用以 Service 方式向 A 应用提供服务。需要下面四个步骤 : 1 ) 在 B 应用中创建 *.aidl 文件 , aidl 文件的定义和接口的定义很相类,如:在 com.alex.aidl 包下创建 IDownloadService.aidl 文件,内容如下: package com.alex.aidl

SPRING注解发布RMI/HTTPInvoker/Hessian/Burlap服务

老子叫甜甜 提交于 2019-12-04 08:30:30
最近做系统重构,计划将多个系统的公共部分抽取出来作为一项公共服务,为以后项目维护和横向扩展奠定基础。 常用的服务发布方式有RMI / HTTPInvoker / Hessian / Burlap,关于这几类java远程服务的性能比较和优缺点大家可参考:http://www.cnblogs.com/jifeng/archive/2011/07/20/2111183.html ,本文着重讲解怎样使用自定的注解标签,结合SPRING将服务方便的发布出去。 一、 Maven配置 <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.7</version> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>3.1.1.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version