Tag: Grpc

适用于Swift iOS App的GRPC BFF

gRPC移动BFF 本教程重点介绍后端前端(BFF)设计模式如何表示移动应用程序开发人员“永远的最佳朋友”,尤其是不同的技术如何帮助实现最佳BFF,从而实现移动应用程序的最佳反应性和响应性 。 一般而言,BFF的目标是简化客户端应用程序的开发时间,以使“服务API”调用解耦,从而有可能减少调用次数,并最终在不同的客户端实现中共享一些逻辑,从而优化常规网络和数据转换,同时增加共享的数据连接,分页,缓存,同步,流式传输等,并最终执行安全性和其他策略。 Internet上已经有很多教程介绍了这种现在非常普遍的设计模式。 在这里,我们没有谈论多通道,微服务,api网关,服务网格,也没有使用任何其他现代的“服务器”术语,我们只是说BFF是移动应用程序与每个移动设备“服务API”之间的“中间件”。应用需要在云端或内部调用。 本教程更具体地侧重于BFF模式如何帮助简化对这些服务API接口的访问,尤其是采用gRPC协议在很大程度上确实有助于减小数据大小,优化网络以及实现和实施一系列协议。共享的基础结构功能。 当然,与其他许多领域一样,这里没有银弹。 其他接口(例如GraphQL)可以在某些情况下提供其他好处,而特定的移动技术(例如iOS上的URLSession后台下载任务)可以在特定移动环境下(例如有限的多任务处理)对网络优化提供非常强大的控制 样本问题:必须全部抓住! 在本教程中,我们将创建一个移动应用程序和一个BFF服务器,以实际演示该设计模式的优势。 我们将创建一个Pokédex移动应用程序,该应用程序将使用公开可用的http://pokeapi.co/ REST API,允许用户按名称或类型搜索Pokemons,并将为找到的每个Pokemon显示以下信息: 名字 图片 所有类型 身高和体重 他住在哪儿 物种栖息地的全文描述(风味文字) 为了获取所有这些数据,将使用以下后端REST API: / pokemon :获取特定口袋妖怪名称的基本口袋妖怪数据 / pokemon-species :获取特定口袋妖怪的栖息地信息 / type :获取特定类型名称的所有宠物小精灵的列表 为什么我们需要BFF? 等一下 这些Pokemon API只是简单的REST API,我可以轻松地从移动应用程序本身直接调用它们。 为什么我需要gRPC,更重要的是为什么要使用BFF? 那就对了。 这些API可以直接由移动应用本身使用,但让我们在下面的图片中看到这些简单方法的缺点。 首先,我们可以看到,即使这个超级简单的应用也需要协调来自三个不同网络API调用的数据。 基本上,要搜索特定类型的所有宠物小精灵,我们需要先调用/ type Rest API以获取口袋妖怪名称或ID的列表,然后对于此列表中的任何单个口袋妖怪,我们都需要调用/ pokemon Rest API以获取基本信息例如名称,类型,高度和宽度,还可以调用/ pokemon-species Rest API获取栖息地信息。 除了需要“协调”对不同的Rest API的调用之外,另一个需要重点关注的事情是,所有这些神奇宝贝Rest API都返回了我们渲染应用程序用户界面实际所需的更多数据。 实际上,在此示例iOS移动应用程序中,我们将使用非常经典的UICollectionView界面,并且仅需要在集合单元中显示上面介绍的口袋妖怪信息(名称,图像,类型等)。 这些神奇宝贝Rest […]

Swift gRPC和Protobuf集成

最近,我试图将gRPC和SwiftProtobuf添加到我的iOS应用程序中,这样做有很多问题,并且在整个周末以及星期一都在墙上ash头。 因此,首先,如果您不熟悉gRPC和Protobuf,请访问官方网站http://grpc.io/。 如果您尝试在Google上搜索诸如how to create Swift gRPC app东西,或者具有gRPC or Swift gRPC任何东西, gRPC or Swift gRPC您很可能最终会找到gRPC github,这是一个很好的资源,但对于某些人来说确实不清楚第一次尝试将此出色的框架集成到他们的项目中。 我现在要做的基本上是为您提供一些必要的步骤,以便设置您的环境(即拥有一个满意的Xcode)。 从https://github.com/grpc/grpc-swift克隆swift gRPC存储库 cd到grpc-swift并进行make 然后在grpc-swift cd third_party内部 在third_party文件夹中,您具有swift-protobuf cd 然后做一个 所以现在您将在 swift-protobuf文件夹中拥有SwiftProtobuf.xcodeproj ,在根目录grpc-swift 现在是时候将这些人添加到您的项目中了。 如果您要构建Mac应用程序,这会更简单一些,但是我将介绍iOS应用程序的步骤 创建一个新的iOS项目 将这两个.xcodeproj文件拖放到根项目下的项目中。 11.然后打开项目设置,然后转到“常规”选项卡。 12。 在嵌入式绑定器中,单击plus,然后添加BoringSSL,CgRPC,gRPC和Czlib框架。 13.如果您执行build,则将至少遇到一个编译错误,该错误表示无法找到CgRPC. 14.返回项目设置,然后选择“构建设置”选项卡并搜索搜索路径。 15.在您的System Header Search Paths和System Framework Search Paths添加“ / grpc-swift / Sources / CgRPC / include System Framework […]