背景
libp2p作为P2P服务常用的通信框架,已经支持了项目需求。但是由于libp2p过于庞大,项目中只用了不到十分之一的功能,所以需要找个替代通信框架。新的框架需要满足两个特性:(1)原生(指能够支持多平台的原生开发语言,比如安卓的kotlin、java, 以及IOS的objectC、swift)支持跨平台(比如安卓、IOS);(2)能够支持网络穿透。
目前先调研gRPC。
gRPC是否支持网络穿透?
常见的网络穿透协议:STUN/TURN/UPNP。libp2p 的relay协议也支持。
调研下来,gRPC不支持网络穿透。
现在已经有其他区块链项目(rChain)使用gRPC,并且自己实现了网络穿透。
https://rchain.atlassian.net/wiki/spaces/CORE/pages/498958481/RNode+supported+network+configuration
暂定结论: 自己实现穿透功能。
移动端开发语言有哪些?
Android 主要的开发语言:Kotlin, Java.
IOS 主要的开发语言: Objective-C, Swift
gRPC是否原生支持移动端开发语言?
结论:都支持。
Kotlin: https://grpc.io/blog/kotlin-gradle-projects/
Java: https://github.com/grpc/grpc-java
Object-C: https://grpc.io/docs/tutorials/basic/objective-c/ https://github.com/grpc/grpc/tree/master/src/objective-c
Swift: https://github.com/grpc/grpc-swift
Todo : 有没有必要现在去搭建demo验证一下?
gRPC之外,有没有其他的通信框架?
目前找到的跨语言、跨平台通信框架,除了gRPC, 还有thrift。
阿里的dubbo 只支持Java。
Motan是新浪微博开源的一个Java 框架。
rpcx是Go语言生态圈的Dubbo, 比Dubbo更轻量。
https://colobu.com/2016/09/05/benchmarks-of-popular-rpc-frameworks/
可能的TODO
- 移动端Android IOS gRPC demo ?
- gRPC 文档梳理学习
- 调研一下thrift 对移动端的支持力度?
- 其他?