WebAssembly+gRPC web=未来?
WebAssembly+gRPC web=未来?
WebAssembly是什么
WebAssembly是一个可以使C#,Java,Golang等静态强类型编程语言,运行在浏览器中的标准,浏览器厂商基于此标准实现执行引擎。
在实现了WebAssembly标准引擎之后,浏览器中可以执行由其他语言编译成的wasm模块。使用强类型编程语言的好处显而易见:
- 可以选择更多的语言,编写前端逻辑
- 静态编程语言编译成的字节码,相对于JS这种脚本语言执行效率更高
- 可以使用静态编程语言生态中的强大类库
需要注意的是,WebAssembly是一个完完全全的前端框架,只是逻辑代码不再使用JS编写,而是使用C#,Java,Golang等静态强类型编程语言编写。
gRPC Web是什么
gRPC是一种与语言无关的的高性能远程过程调用(RPC)框架。Grpc有以下优点
- 现代高性能轻量级 RPC 框架。
- 协定优先 API 开发,默认使用协议缓冲区,允许与语言无关的实现。
- 可用于多种语言的工具,以生成强类型服务器和客户端。
- 支持客户端、服务器和双向流式处理调用。
- 使用 Protobuf 二进制序列化减少对网络的使用。
而gRPC Web是Grpc的前端实现版本,可以使浏览器应用直接与gRPC交互。
有了gRPC Web,我们可以直接在WebAssembly中调用gRPC Server,而不用再通过传统的Http请求方法调用。
gRPC使用Protobuf (协议缓冲区)作为有效负载的格式,并支持所有类型的流传输:
- Server-side streaming
服务器端流 - Client-side streaming
客户端流 - Bidirectional streaming
双向流
从性能的角度来看,Protobuf是一种有效的二进制消息格式。 Protobuf序列化会产生较小的消息负载,这在移动和Web应用程序等有限带宽的情况下非常重要。
gRPC通过服务器和客户端之间共享的.proto文件定义服务和消息的约定 。 它允许您自动生成客户端库。 gRPC在平台和实现之间是一致的。
不能在Web浏览器中使用gRPC,因为它需要HTTP / 2二进制协议。 不用担心,该问题的解决方案称为gRPC-Web ,它使gRPC在浏览器中可用。 NET的gRPC-Web实现也已正式发布。
公平地说, gRPC-Web提供有限的gRPC支持。 例如,不支持客户端和双向流,并且对服务器流的支持也很有限。
本文来自博客园,作者:{咏南中间件},转载请注明原文链接:https://www.cnblogs.com/hnxxcxg/p/17153709.html