{"id":4474,"date":"2022-04-20T17:56:08","date_gmt":"2022-04-20T12:26:08","guid":{"rendered":"https:\/\/lng-consultancy.com\/staging\/5474\/?p=4474"},"modified":"2022-09-17T06:30:11","modified_gmt":"2022-09-17T06:30:11","slug":"introduction-to-grpc","status":"publish","type":"post","link":"https:\/\/lng-consultancy.com\/staging\/5474\/introduction-to-grpc\/","title":{"rendered":"Introduction to gRPC"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">Introduction<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">gRPC is initially developed by Google. It is a high performance, open source RPC framework and is based on a client-server model of remote procedure calls.<br>With help of gRPC client application can directly call methods on a server application as if it was a local object.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Strengths of gRPC<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">gRPC is offering many benefits in certain operations. Some of the gRPC strengths are as follows:<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Performance<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">gRPC offers better performance and API-security than REST+JSON communication as it uses Protobuf and HTTP\/2. Protobuf serializes the messages on the server and client sides quickly, resulting in small and compact message payloads. HTTP\/2 scales up the performance ranking via server push, multiplexing, and header compression.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Streaming<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">gRPC supports client- or server-side streaming semantics, which are already incorporated in the service definition. This makes it much simpler to build streaming services or clients. A gRPC service supports different streaming combinations through HTTP\/2:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Unary (No Streaming)<\/li><li>Client-to-server streaming<\/li><li>Server-to-Client streaming<\/li><li>Bi-directional streaming<\/li><\/ul>\n\n\n\n<h4 class=\"wp-block-heading\">Code Generation<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">The prime feature of gRPC methodology is the native code generation for client\/server applications. gRPC frameworks use protoc compiler to generate code from the .proto file. It can produce server-side skeletons and client-side network stubs.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Interoperability and Productivity<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">gRPC tools and libraries are designed to work with multiple platforms and programming languages, including Java, JavaScript, Ruby, Python, Objective-C, C#, and more. As it automatically generate the skeletons it helps developers to focus more on business logic.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Weaknesses of gRPC<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">gRPC also have some downsides that we need to be aware of before choosing it for developing applications.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Limited Browser Support<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">As gRPC heavily uses HTTP\/2, it is impossible to call a gRPC service from a web browser directly. No modern browser provides the control needed over web requests to support a gRPC client. Therefore, a proxy layer and gRPC-web are required to perform conversions between HTTP\/1.1 and HTTP\/2.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Non-human Readable Format<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Protobuf compresses gRPC messages into a non-human readable format.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">No Edge Caching<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">gRPC specification doesn\u2019t make any provisions for cache semantics between server and client.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Comparison of different Serialization schemes<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><th>\u00a0<\/th><th>XML<\/th><th>JSON<\/th><th>Proto<\/th><\/tr><tr><td>Human Readable Data<\/td><td>Yes<\/td><td>Yes<\/td><td>No<\/td><\/tr><tr><td>Browser consumable<\/td><td>Yes<\/td><td>Yes<\/td><td>No<\/td><\/tr><tr><td>JS Support<\/td><td>Yes<\/td><td>Yes<\/td><td>No<\/td><\/tr><tr><td>Data Security<\/td><td>Can be eavesdropped and decoded<\/td><td>Can be eavesdropped and decoded<\/td><td>Hard to decode without knowing the schema<\/td><\/tr><tr><td>Processing Speed<\/td><td>< JSON<\/td><td>< Proto<\/td><td>> XML, JSON<\/td><\/tr><tr><td>Interfaces For RPC<\/td><td>No<\/td><td>No<\/td><td>Yes<\/td><\/tr><tr><td>Validations<\/td><td>Hand parsing and Validations are required<\/td><td>Hand parsing and Validations are required<\/td><td>Validations are easy with Keywords<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Working with Protocol Buffers<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">By default, gRPC uses Protocol Buffers, Google\u2019s open source mechanism for serializing structured data. Protocol Buffer data is structured as messages, where each message contains a series of <em><strong>name-value<\/strong><\/em> pairs called <em><strong>fields<\/strong><\/em>. We can also use other data formats such as JSON.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">We will see how Protocol Buffers works:<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">As step-1 we define the structure for the data we want to serialize in a <strong><em>proto<\/em><\/strong> file, i.e. is an text file with a <strong><em>.proto<\/em><\/strong> extension. For example:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">message Player{\n    string name = 1;\n    int32 id = 2,\n    bool iscaptain = 3 \n}\n<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">In above example 1,2,3 denotes the sequence for the fields.<br>As Step-2 We will use the Protocol Buffer compiler <strong><em>protoc<\/em> <\/strong>to generate data access classes in our preferred language from previously generated <strong><em>proto<\/em><\/strong> definition.<br>This step provide accessors for each field and methods to serialize\/parse the entire structure to\/from raw bytes. So for instance, if we chose C#, running the compiler<br>will generate the Player class, that we can use in our application to populate, serialize, and retrieve Player protocol buffer messages.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Finally, we define gRPC services in ordinary proto files, with RPC method parameters and return types specified as protocol buffer messages. For example:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">service PlayerService{\n    rpc GetPlayer(PlayerRequest) returns (PlayerResponse){}\n}\n\nmessage PlayerRequest{\n    int32 id = 1;\n}\n\nmessage PlayerResponse {\n    int32 id = 1;\n    string name = 2;\n    bool iscaptain = 3;\n}\n<\/pre>\n\n\n\n<figure class=\"wp-block-image size-full\"><img data-recalc-dims=\"1\" decoding=\"async\" width=\"300\" height=\"85\" src=\"https:\/\/i0.wp.com\/lng-consultancy.com\/staging\/5474\/wp-content\/uploads\/2022\/09\/gRPC_Workflow.jpg?resize=300%2C85&ssl=1\" alt=\"\" class=\"wp-image-8410\"\/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Protocol buffer versions<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Currently most application uses Protocol Buffers version 3(proto3), which has slightly simplified syntax and supports more languages. Proto3 is currently available in Java, C++, Python, Objective-C, C#,\u00a0 Ruby, and JavaScript from the protocol buffers GitHub repo. Proto3 also helps to avoiding compatibility issues with proto2 clients talking to proto3 servers and vice versa.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Different Types of RPC:<\/h2>\n\n\n\n<h4 class=\"wp-block-heading\">Simple RPC(Unary RPC):<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">This is a most simple type of RPC where the client sends a single request and gets back a single response.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"server-streaming-rpc\">Server streaming RPC:<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">A server-streaming RPC is similar to a unary RPC, except that the server returns a stream of messages including status details (status code and optional status message) and trailing metadata in response to a client\u2019s request.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Client streaming RPC:<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">A client-streaming RPC is similar to a unary RPC, except that the client sends a stream of messages to the server instead of a single message. The server responds with a single message along with its status details and optional trailing metadata.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Bidirectional streaming RPC:<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">In a bidirectional streaming RPC, the call is initiated by the client invoking the method and the server receiving the client metadata, method name, and deadline.<br>The server can choose to send back its initial metadata or wait for the client to start streaming messages.<br>Here the client and server can read and write messages in any order. For example,<br>A server can wait until it has received all of a client\u2019s messages before writing its messages or,<br>the server gets a request, then sends back a response, then the client sends another request based on the response, and so on.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">RPC Termination\/Complition<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The RPC call complitions for client and server are managed in their own environment. It may happen that an RPC finishes successfully on the server, but fails on the client side may be because the responses arrived to client after the specified deadlines\/timeouts limit.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Authentication<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">gRPC is designed to work with a variety of authentication mechanisms.<br>The following authentication mechanisms are built-in to gRPC:<br>1. <strong>SSL\/TLS:<\/strong> gRPC has SSL\/TLS integration and promotes the use of SSL\/TLS (with or without Google token-based authentication)<br>to authenticate the server and encrypt all the data exchanged between the client and the server.<br>2. <strong>ALTS:<\/strong> gRPC supports ALTS as a transport security mechanism, if the application is running on Google Cloud Platform (GCP).<br>3. <strong>Token-based authentication with Google<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">gRPC also provides a simple authentication API that lets you provide all the necessary authentication information as Credentials when creating a channel or making a call.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Why we use gRPC?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The main usage scenarios:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Low latency, highly scalable, distributed systems.<\/li><li>Developing mobile clients which are communicating to a cloud server.<\/li><li>Designing a new protocol that needs to be accurate, efficient and language independent.<\/li><li>Layered design to enable extension eg. authentication, load balancing, logging and monitoring etc.<\/li><\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Introduction gRPC is initially developed by Google. It is a high performance, open source RPC framework and is based on a client-server model of remote procedure calls.With help of gRPC client application can directly call methods on a server application as if it was a local object. Strengths of gRPC gRPC is offering many benefits [&hellip;]<\/p>\n","protected":false},"author":14,"featured_media":7181,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"nf_dc_page":"","om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[32],"tags":[],"class_list":["post-4474","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-software-development"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.6 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Introduction to gRPC - L&amp;G Consultancy<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/lng-consultancy.com\/introduction-to-grpc\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Introduction to gRPC - L&amp;G Consultancy\" \/>\n<meta property=\"og:description\" content=\"Introduction gRPC is initially developed by Google. It is a high performance, open source RPC framework and is based on a client-server model of remote procedure calls.With help of gRPC client application can directly call methods on a server application as if it was a local object. Strengths of gRPC gRPC is offering many benefits [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/lng-consultancy.com\/introduction-to-grpc\/\" \/>\n<meta property=\"og:site_name\" content=\"L&amp;G Consultancy\" \/>\n<meta property=\"article:published_time\" content=\"2022-04-20T12:26:08+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-09-17T06:30:11+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/lng-consultancy.com\/wp-content\/uploads\/2022\/06\/grpc_cover.jpeg\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"600\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"prasanna1983\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"prasanna1983\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/lng-consultancy.com\\\/introduction-to-grpc\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/lng-consultancy.com\\\/introduction-to-grpc\\\/\"},\"author\":{\"name\":\"prasanna1983\",\"@id\":\"http:\\\/\\\/sh024.global.temp.domains\\\/~landgcon\\\/#\\\/schema\\\/person\\\/4c21b138fe56febd6dea51085270d544\"},\"headline\":\"Introduction to gRPC\",\"datePublished\":\"2022-04-20T12:26:08+00:00\",\"dateModified\":\"2022-09-17T06:30:11+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/lng-consultancy.com\\\/introduction-to-grpc\\\/\"},\"wordCount\":1087,\"commentCount\":0,\"image\":{\"@id\":\"https:\\\/\\\/lng-consultancy.com\\\/introduction-to-grpc\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/i0.wp.com\\\/lng-consultancy.com\\\/staging\\\/5474\\\/wp-content\\\/uploads\\\/2022\\\/06\\\/grpc_cover.jpeg?fit=1200%2C600&ssl=1\",\"articleSection\":[\"Software Development\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/lng-consultancy.com\\\/introduction-to-grpc\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/lng-consultancy.com\\\/introduction-to-grpc\\\/\",\"url\":\"https:\\\/\\\/lng-consultancy.com\\\/introduction-to-grpc\\\/\",\"name\":\"Introduction to gRPC - L&amp;G Consultancy\",\"isPartOf\":{\"@id\":\"http:\\\/\\\/sh024.global.temp.domains\\\/~landgcon\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/lng-consultancy.com\\\/introduction-to-grpc\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/lng-consultancy.com\\\/introduction-to-grpc\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/i0.wp.com\\\/lng-consultancy.com\\\/staging\\\/5474\\\/wp-content\\\/uploads\\\/2022\\\/06\\\/grpc_cover.jpeg?fit=1200%2C600&ssl=1\",\"datePublished\":\"2022-04-20T12:26:08+00:00\",\"dateModified\":\"2022-09-17T06:30:11+00:00\",\"author\":{\"@id\":\"http:\\\/\\\/sh024.global.temp.domains\\\/~landgcon\\\/#\\\/schema\\\/person\\\/4c21b138fe56febd6dea51085270d544\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/lng-consultancy.com\\\/introduction-to-grpc\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/lng-consultancy.com\\\/introduction-to-grpc\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/lng-consultancy.com\\\/introduction-to-grpc\\\/#primaryimage\",\"url\":\"https:\\\/\\\/i0.wp.com\\\/lng-consultancy.com\\\/staging\\\/5474\\\/wp-content\\\/uploads\\\/2022\\\/06\\\/grpc_cover.jpeg?fit=1200%2C600&ssl=1\",\"contentUrl\":\"https:\\\/\\\/i0.wp.com\\\/lng-consultancy.com\\\/staging\\\/5474\\\/wp-content\\\/uploads\\\/2022\\\/06\\\/grpc_cover.jpeg?fit=1200%2C600&ssl=1\",\"width\":1200,\"height\":600},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/lng-consultancy.com\\\/introduction-to-grpc\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/lng-consultancy.com\\\/staging\\\/5474\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Introduction to gRPC\"}]},{\"@type\":\"WebSite\",\"@id\":\"http:\\\/\\\/sh024.global.temp.domains\\\/~landgcon\\\/#website\",\"url\":\"http:\\\/\\\/sh024.global.temp.domains\\\/~landgcon\\\/\",\"name\":\"L&amp;G Consultancy\",\"description\":\"Your Technology Partner\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"http:\\\/\\\/sh024.global.temp.domains\\\/~landgcon\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"http:\\\/\\\/sh024.global.temp.domains\\\/~landgcon\\\/#\\\/schema\\\/person\\\/4c21b138fe56febd6dea51085270d544\",\"name\":\"prasanna1983\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/d4420d24cfe33acd567b152eebf4add73672c96086072e42f2feb467849fc30e?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/d4420d24cfe33acd567b152eebf4add73672c96086072e42f2feb467849fc30e?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/d4420d24cfe33acd567b152eebf4add73672c96086072e42f2feb467849fc30e?s=96&d=mm&r=g\",\"caption\":\"prasanna1983\"},\"url\":\"https:\\\/\\\/lng-consultancy.com\\\/staging\\\/5474\\\/author\\\/prasanna1983\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Introduction to gRPC - L&amp;G Consultancy","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/lng-consultancy.com\/introduction-to-grpc\/","og_locale":"en_US","og_type":"article","og_title":"Introduction to gRPC - L&amp;G Consultancy","og_description":"Introduction gRPC is initially developed by Google. It is a high performance, open source RPC framework and is based on a client-server model of remote procedure calls.With help of gRPC client application can directly call methods on a server application as if it was a local object. Strengths of gRPC gRPC is offering many benefits [&hellip;]","og_url":"https:\/\/lng-consultancy.com\/introduction-to-grpc\/","og_site_name":"L&amp;G Consultancy","article_published_time":"2022-04-20T12:26:08+00:00","article_modified_time":"2022-09-17T06:30:11+00:00","og_image":[{"width":1200,"height":600,"url":"https:\/\/lng-consultancy.com\/wp-content\/uploads\/2022\/06\/grpc_cover.jpeg","type":"image\/jpeg"}],"author":"prasanna1983","twitter_card":"summary_large_image","twitter_misc":{"Written by":"prasanna1983","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/lng-consultancy.com\/introduction-to-grpc\/#article","isPartOf":{"@id":"https:\/\/lng-consultancy.com\/introduction-to-grpc\/"},"author":{"name":"prasanna1983","@id":"http:\/\/sh024.global.temp.domains\/~landgcon\/#\/schema\/person\/4c21b138fe56febd6dea51085270d544"},"headline":"Introduction to gRPC","datePublished":"2022-04-20T12:26:08+00:00","dateModified":"2022-09-17T06:30:11+00:00","mainEntityOfPage":{"@id":"https:\/\/lng-consultancy.com\/introduction-to-grpc\/"},"wordCount":1087,"commentCount":0,"image":{"@id":"https:\/\/lng-consultancy.com\/introduction-to-grpc\/#primaryimage"},"thumbnailUrl":"https:\/\/i0.wp.com\/lng-consultancy.com\/staging\/5474\/wp-content\/uploads\/2022\/06\/grpc_cover.jpeg?fit=1200%2C600&ssl=1","articleSection":["Software Development"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/lng-consultancy.com\/introduction-to-grpc\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/lng-consultancy.com\/introduction-to-grpc\/","url":"https:\/\/lng-consultancy.com\/introduction-to-grpc\/","name":"Introduction to gRPC - L&amp;G Consultancy","isPartOf":{"@id":"http:\/\/sh024.global.temp.domains\/~landgcon\/#website"},"primaryImageOfPage":{"@id":"https:\/\/lng-consultancy.com\/introduction-to-grpc\/#primaryimage"},"image":{"@id":"https:\/\/lng-consultancy.com\/introduction-to-grpc\/#primaryimage"},"thumbnailUrl":"https:\/\/i0.wp.com\/lng-consultancy.com\/staging\/5474\/wp-content\/uploads\/2022\/06\/grpc_cover.jpeg?fit=1200%2C600&ssl=1","datePublished":"2022-04-20T12:26:08+00:00","dateModified":"2022-09-17T06:30:11+00:00","author":{"@id":"http:\/\/sh024.global.temp.domains\/~landgcon\/#\/schema\/person\/4c21b138fe56febd6dea51085270d544"},"breadcrumb":{"@id":"https:\/\/lng-consultancy.com\/introduction-to-grpc\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/lng-consultancy.com\/introduction-to-grpc\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/lng-consultancy.com\/introduction-to-grpc\/#primaryimage","url":"https:\/\/i0.wp.com\/lng-consultancy.com\/staging\/5474\/wp-content\/uploads\/2022\/06\/grpc_cover.jpeg?fit=1200%2C600&ssl=1","contentUrl":"https:\/\/i0.wp.com\/lng-consultancy.com\/staging\/5474\/wp-content\/uploads\/2022\/06\/grpc_cover.jpeg?fit=1200%2C600&ssl=1","width":1200,"height":600},{"@type":"BreadcrumbList","@id":"https:\/\/lng-consultancy.com\/introduction-to-grpc\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/lng-consultancy.com\/staging\/5474\/"},{"@type":"ListItem","position":2,"name":"Introduction to gRPC"}]},{"@type":"WebSite","@id":"http:\/\/sh024.global.temp.domains\/~landgcon\/#website","url":"http:\/\/sh024.global.temp.domains\/~landgcon\/","name":"L&amp;G Consultancy","description":"Your Technology Partner","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"http:\/\/sh024.global.temp.domains\/~landgcon\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"http:\/\/sh024.global.temp.domains\/~landgcon\/#\/schema\/person\/4c21b138fe56febd6dea51085270d544","name":"prasanna1983","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/d4420d24cfe33acd567b152eebf4add73672c96086072e42f2feb467849fc30e?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/d4420d24cfe33acd567b152eebf4add73672c96086072e42f2feb467849fc30e?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/d4420d24cfe33acd567b152eebf4add73672c96086072e42f2feb467849fc30e?s=96&d=mm&r=g","caption":"prasanna1983"},"url":"https:\/\/lng-consultancy.com\/staging\/5474\/author\/prasanna1983\/"}]}},"jetpack_featured_media_url":"https:\/\/i0.wp.com\/lng-consultancy.com\/staging\/5474\/wp-content\/uploads\/2022\/06\/grpc_cover.jpeg?fit=1200%2C600&ssl=1","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/lng-consultancy.com\/staging\/5474\/wp-json\/wp\/v2\/posts\/4474","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/lng-consultancy.com\/staging\/5474\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/lng-consultancy.com\/staging\/5474\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/lng-consultancy.com\/staging\/5474\/wp-json\/wp\/v2\/users\/14"}],"replies":[{"embeddable":true,"href":"https:\/\/lng-consultancy.com\/staging\/5474\/wp-json\/wp\/v2\/comments?post=4474"}],"version-history":[{"count":2,"href":"https:\/\/lng-consultancy.com\/staging\/5474\/wp-json\/wp\/v2\/posts\/4474\/revisions"}],"predecessor-version":[{"id":8411,"href":"https:\/\/lng-consultancy.com\/staging\/5474\/wp-json\/wp\/v2\/posts\/4474\/revisions\/8411"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/lng-consultancy.com\/staging\/5474\/wp-json\/wp\/v2\/media\/7181"}],"wp:attachment":[{"href":"https:\/\/lng-consultancy.com\/staging\/5474\/wp-json\/wp\/v2\/media?parent=4474"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/lng-consultancy.com\/staging\/5474\/wp-json\/wp\/v2\/categories?post=4474"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/lng-consultancy.com\/staging\/5474\/wp-json\/wp\/v2\/tags?post=4474"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}