【发布时间】:2017-03-08 07:53:12
【问题描述】:
我们有一个用 C 语言编写的带有 c-protobuf 接口和 C++ 包装 API 的遗留协议栈,需要移植到 Android 并使用 AIDL 接口开发 java 服务。那么问题来了,
我们能否移除 C++ 接口并让 Java 服务通过 protobuf 与 C 原生进程通信?
另一种方法是剥离c-protobuf接口,开发JNI接口。 protobuf 与 JNI 方法之间的权衡是什么?
据我所知,与 JNI 方法相比,由于 IPC、序列化等原因,性能将是一个问题。考虑到 Java 和 Android 上下文,这种方法还有其他主要缺点吗?此外,该服务将被多个用户应用程序使用。
【问题讨论】:
-
我会选择 #2,它会比 #1 快得多(即使你使用 unix 管道而不是套接字)
标签: java android java-native-interface protocol-buffers protobuf-c