iOS gRPC 初步探索

下面让我来具体说说,gRPC的简单原理和使用方法,最重要的是踩过的坑

一、何为gRPC

gRPC 是一个高性能、开源和通用的 RPC 框架,面向移动和 HTTP/2 设计。gRPC 基于 HTTP/2 标准设计,带来诸如双向流、流控、头部压缩、单 TCP 连接上的多复用请求等特。这些特性使得其在移动设备上表现更好,更省电和节省空间占用。

而RPC框架,即RPC(Remote Procedure Call)—远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。

简单来说,是一种可以简化客户端和服务器之间交互响应的策略。

二、gRPC的使用

和我们平时所调用的短链API一样。首先服务器要定义服务,然后服务中包含了API函数,客户端在进行gRPC的接入并启用服务后,可以直接调用响应API函数,达到和服务器交互的目的。

为了能够使用gRPC框架,iOS工程必须继承CocoaPods,gRPC利用CocoaPods的特性,将提前定义好的,包含了服务和API的.proto文件,生成对应的object-c函数,使其可以直接调用

所以,第一步,导入所需的.proto文件,例如: 由于我们之前确定了基本的CDN框架。并且我这边已经把整个CDN参数获取,存储,上报的大架子已经搭完了,剩下具体工作还有几项:

具体参数的整合。 目前只获取了初步需要的基本参数,如网络的DNS时间等,视频的下载总大小总时长等。主要剩下1. 比较细小的通用参数,需要和服务器继续商定还需要什么,例如运营商名称,经纬度等 2. 具体的视频交互参数,例如缓冲了几次,缓冲的总时长,是否进行过中英文切换等。

数据的本地持久化。 目前DEMO中简单进行了存储和整合,这个星期对WCDB进行了简单调研,发现除了多层嵌套模型比较难处理以外,剩下没有任何问题,可以接入。下个版本尝试先接入到CDN上报参数中。并根据业务要求,封装出一套满足业务要求的中间API调用层,无非是增删改查

网络上报的具体方式 目前DEMO中使用HTTP短链push请求上报。经过小楠的建议,后续可以采取RPC方式。也因此,初步实现了gRPC的接入

下面让我来具体说说,gRPC的简单原理和使用方法,最重要的是踩过的坑

一、何为gRPC

gRPC 是一个高性能、开源和通用的 RPC 框架,面向移动和 HTTP/2 设计。gRPC 基于 HTTP/2 标准设计,带来诸如双向流、流控、头部压缩、单 TCP 连接上的多复用请求等特。这些特性使得其在移动设备上表现更好,更省电和节省空间占用。

而RPC框架,即RPC(Remote Procedure Call)—远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。

简单来说,是一种可以简化客户端和服务器之间交互响应的策略。

二、gRPC的使用

和我们平时所调用的短链API一样。首先服务器要定义服务,然后服务中包含了API函数,客户端在进行gRPC的接入并启用服务后,可以直接调用响应API函数,达到和服务器交互的目的。

为了能够使用gRPC框架,iOS工程必须继承CocoaPods,gRPC利用CocoaPods的特性,将提前定义好的,包含了服务和API的.proto文件,生成对应的object-c函数,使其可以直接调用

所以,第一步,导入所需的.proto文件,例如:

文件内容如下:

其中,service和message都是服务端需要定义好的服务跟API函数 第二步,写好.podspec 文件和podfile,进行pod install生成所需.h和.m文件

.podspec文件内容如下:

podfile文件如下:

执行完成后,会生成对应的文件如下:

分别对应了service和message。

其中,你在pod install的时候可能会遇到各种链接被墙到问题。这个时候需要配置一下你的git代理到你的vpn代理上

例如,我的vpn代理为:

则,我需要配置我的git 代理为:

第三步,当然是写代码啦!!!

看起来超简单!!!!

目前只是初步实现了Demo。调用可以成功实现。

但是,还需要有一个负载均衡的策略,目前在iOS的API中没有发现有相关使用,后续可能需要我们自己做。

参考资料:

gRPC 官方文档中文版:doc.oschina.net/grpc?t=6014…

demo地址:github.com/yifriday/gR…

转载于:https://juejin.im/post/5bbf059fe51d450e6a2e5f11

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值