1、gRpc vs Rest:
参考:https://www.baeldung.com/rest-vs-grpc
REST is handy in integrating microservices and third-party applications with the core systems.
gRPC can find its application in various systems like IoT systems that require light-weight message transmission, mobile applications with no browser support, and applications that need multiplexed streams.
多个方面:Rules(.proto)、Underlying HTTP Protocol(HTTP/2)、Data Exchange Format(protobuf)、Serialization、Latency、Browser Support、Code Generation Features
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
4.1. Guidelines vs. Rules REST is a set of guidelines for designing web APIs without enforcing anything. On the other hand, gRPC enforces rules by defining a .proto file that must be adhered to by both client and server for data exchange. 4.2. Underlying HTTP Protocol REST provides a request-response communication model built on the HTTP 1.1 protocol. Therefore, when multiple requests reach the server, it is bound to handle each of them, one at a time. However, gRPC follows a client-response model of communication for designing web APIs that rely on HTTP/2. Hence, gRPC allows streaming communication and serves multiple requests simultaneously. In addition to that, gRPC also supports unary communication similar to REST. 4.3. Data Exchange Format REST typically uses JSON and XML formats for data transfer. However, gRPC relies on Protobuf for an exchange of data over the HTTP/2 protocol. 4.4. Serialization vs. Strong Typing REST, in most cases, uses JSON or XML that requires serialization and conversion into the target programming language for both client and server, thereby increasing response time and the possibility of errors while parsing the request/response. However, gRPC provides strongly typed messages automatically converted using the Protobuf exchange format to the chosen programming language. 4.5. Latency REST utilizing HTTP 1.1 requires a TCP handshake for each request. Hence, REST APIs with HTTP 1.1 can suffer from latency issues. On the other hand, gRPC relies on HTTP/2 protocol, which uses multiplexed streams. Therefore, several clients can send multiple requests simultaneously without establishing a new TCP connection for each one. Also, the server can send push notifications to clients via the established connection. 4.6. Browser Support REST APIs on HTTP 1.1 have universal browser support. However, gRPC has limited browser support because numerous browsers (usually the older versions) have no mature support for HTTP/2. So, it may require gRPC-web and a proxy layer to perform conversions between HTTP 1.1 and HTTP/2. Therefore, at the moment, gRPC is primarily used for internal services. 4.7. Code Generation Features REST provides no built-in code generation features. However, we can use third-party tools like Swagger or Postman to produce code for API requests. On the other hand, gRPC, using its protoc compiler, comes with native code generation features, compatible with several programming languages.View Code
2、demo:
http://www.hushowly.com/articles/1759
标签:HTTP,1.1,gRpc,However,REST,server,gRPC From: https://www.cnblogs.com/clarino/p/16878858.html