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支持。 例如,不支持客户端和双向流,并且对服务器流的支持也很有限。

 

 

 

 

posted @ 2023-02-25 08:12  delphi中间件  阅读(199)  评论(0编辑  收藏  举报