{"id":11106,"date":"2023-03-09T14:04:51","date_gmt":"2023-03-09T10:34:51","guid":{"rendered":"https:\/\/nabfollower.com\/blog\/grpc-and-net-core-1a8p\/"},"modified":"2023-03-09T14:04:51","modified_gmt":"2023-03-09T10:34:51","slug":"grpc-and-net-core-1a8p","status":"publish","type":"post","link":"https:\/\/nabfollower.com\/blog\/grpc-and-net-core-1a8p\/","title":{"rendered":"\u0627\u0646\u062c\u0645\u0646 gRPC \u0648 Net Core &#8211; DEV"},"content":{"rendered":"<div data-article-id=\"1392951\" id=\"article-body\">\n<p>\u0628\u0647\u200c\u0639\u0646\u0648\u0627\u0646 \u062a\u0648\u0633\u0639\u0647\u200c\u062f\u0647\u0646\u062f\u06af\u0627\u0646\u060c \u062f\u0631 \u062d\u06cc\u0646 \u0633\u0627\u062e\u062a \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627\u06cc API\u060c \u062e\u0648\u062f \u0631\u0627 \u0628\u06cc\u0646 \u0627\u0646\u062a\u062e\u0627\u0628\u200c\u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641\u06cc \u0627\u0632 \u0641\u0631\u06cc\u0645\u200c\u0648\u0631\u06a9\u200c\u0647\u0627 \u0645\u06cc\u200c\u06cc\u0627\u0628\u06cc\u0645 <em>\u0628\u0627\u0642\u06cc \u0645\u0627\u0646\u062f\u0647<\/em>\u060c <em>\u0635\u0627\u0628\u0648\u0646<\/em>\u060c <em>GraphQL<\/em>\u060c <em>HTTP API<\/em> \u0648 \u0628\u06cc\u0634\u062a\u0631.  \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0628\u0631\u0627\u06cc \u06cc\u06a9 \u062a\u0648\u0633\u0639\u0647 \u062f\u0647\u0646\u062f\u0647 \u062f\u0634\u0648\u0627\u0631 \u0628\u0627\u0634\u062f \u06a9\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 \u062f\u0631\u0633\u062a\u06cc \u0631\u0627 \u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0646\u062f \u06a9\u0647 \u0646\u06cc\u0627\u0632\u0647\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0627 \u0628\u0631\u0622\u0648\u0631\u062f\u0647 \u06a9\u0646\u062f.<\/p>\n<p>\u062f\u0631 \u0627\u06cc\u0646 \u067e\u0633\u062a\u060c \u0645\u06cc\u200c\u062e\u0648\u0627\u0647\u0645 gRPC \u0631\u0627 \u06a9\u0647 \u06cc\u06a9\u06cc \u0627\u0632 \u0631\u0648\u0634\u200c\u0647\u0627\u06cc \u062c\u062f\u06cc\u062f\u062a\u0631 \u0627\u0633\u062a\u060c \u0628\u0647 \u0634\u0645\u0627 \u0645\u0639\u0631\u0641\u06cc \u06a9\u0646\u0645.  gRPC \u0627\u0632 \u0628\u0633\u06cc\u0627\u0631\u06cc \u0627\u0632 \u0632\u0628\u0627\u0646\u200c\u0647\u0627 \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0645\u06cc\u200c\u06a9\u0646\u062f <em>C#\/.Net<\/em>\u060c <em>C++<\/em>\u060c <em>\u062f\u0627\u0631\u062a<\/em>\u060c <em>\u0628\u0631\u0648<\/em>\u060c <em>\u062c\u0627\u0648\u0627<\/em> \u0648 \u0633\u0627\u06cc\u0631 \u0632\u0628\u0627\u0646 \u0647\u0627\u06cc \u0631\u0627\u06cc\u062c  \u0627\u0645\u0631\u0648\u0632 \u0645\u0627 \u0628\u0631 \u0631\u0648\u06cc \u0686\u06af\u0648\u0646\u06af\u06cc \u0627\u062f\u063a\u0627\u0645 gRPC \u0628\u0627 ASP.Net Core \u062a\u0645\u0631\u06a9\u0632 \u0645\u06cc \u06a9\u0646\u06cc\u0645.<\/p>\n<p>\u062f\u0631 \u067e\u0627\u06cc\u0627\u0646 \u0627\u06cc\u0646 \u067e\u0633\u062a\u060c \u062f\u0631\u06a9 \u0627\u0648\u0644\u06cc\u0647 \u0627\u06cc \u0627\u0632 \u0627\u06cc\u0646\u06a9\u0647 gRPC \u0686\u06cc\u0633\u062a\u060c \u0686\u06af\u0648\u0646\u0647 \u0628\u0627 ASP.Net Core \u06a9\u0627\u0631 \u0645\u06cc \u06a9\u0646\u062f \u0648 \u0627\u06cc\u0646\u06a9\u0647 \u0622\u06cc\u0627 \u0628\u0631\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0634\u0645\u0627 \u0645\u0646\u0627\u0633\u0628 \u0627\u0633\u062a \u06cc\u0627 \u0646\u0647\u060c \u062e\u0648\u0627\u0647\u06cc\u062f \u062f\u0627\u0634\u062a.  \u0645\u0627 \u06cc\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647 Client\/Server \u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u062e\u0648\u0627\u0647\u06cc\u0645 \u06a9\u0631\u062f\u060c \u0634\u0645\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u06a9\u062f \u06a9\u0627\u0631 \u06a9\u0627\u0645\u0644 \u0631\u0627 \u062f\u0631 \u0645\u062e\u0632\u0646 Git\u060c \u067e\u06cc\u0648\u0646\u062f \u0632\u06cc\u0631\u060c \u067e\u06cc\u062f\u0627 \u06a9\u0646\u06cc\u062f.<\/p>\n<p>\u0628\u06cc\u0627 \u0634\u0631\u0648\u0639 \u06a9\u0646\u06cc\u0645&#8230;<\/p>\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_81 counter-hierarchy ez-toc-counter-rtl ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">\u0641\u0647\u0631\u0633\u062a \u0645\u0637\u0627\u0644\u0628<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/nabfollower.com\/blog\/grpc-and-net-core-1a8p\/#gRPC_%DA%86%DB%8C%D8%B3%D8%AA%D8%9F\" >gRPC \u0686\u06cc\u0633\u062a\u061f<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/nabfollower.com\/blog\/grpc-and-net-core-1a8p\/#%D8%A8%D8%A7%D9%81%D8%B1%D9%87%D8%A7%DB%8C_%D9%BE%D8%B1%D9%88%D8%AA%DA%A9%D9%84_%DA%86%DB%8C%D8%B3%D8%AA%D8%9F\" >\u0628\u0627\u0641\u0631\u0647\u0627\u06cc \u067e\u0631\u0648\u062a\u06a9\u0644 \u0686\u06cc\u0633\u062a\u061f<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/nabfollower.com\/blog\/grpc-and-net-core-1a8p\/#gRPC_%D9%88_Net_Core\" >gRPC \u0648 .Net Core<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/nabfollower.com\/blog\/grpc-and-net-core-1a8p\/#%D8%B1%D8%A7%D9%87_%D8%A7%D9%86%D8%AF%D8%A7%D8%B2%DB%8C_gRPC\" >\u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc gRPC<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/nabfollower.com\/blog\/grpc-and-net-core-1a8p\/#%D8%B3%D8%B1%D9%88%DB%8C%D8%B3_gRPC\" >\u0633\u0631\u0648\u06cc\u0633 gRPC<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/nabfollower.com\/blog\/grpc-and-net-core-1a8p\/#%D9%85%D9%86%D8%A7%D8%A8%D8%B9\" >\u0645\u0646\u0627\u0628\u0639<\/a><\/li><\/ul><\/li><\/ul><\/nav><\/div>\n<h3><span class=\"ez-toc-section\" id=\"gRPC_%DA%86%DB%8C%D8%B3%D8%AA%D8%9F\"><\/span>\n<p>  gRPC \u0686\u06cc\u0633\u062a\u061f<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>gRPC \u0645\u062e\u0641\u0641 Google Remote Procedure Calls \u0627\u0633\u062a.  \u062f\u0631 \u0627\u0628\u062a\u062f\u0627 \u062a\u0648\u0633\u0637 \u06af\u0648\u06af\u0644 \u0637\u0631\u0627\u062d\u06cc \u0634\u062f \u062a\u0627 \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631\u062f\u06cc \u062a\u0648\u0632\u06cc\u0639 \u0634\u062f\u0647 \u0631\u0627 \u0628\u0631\u0627\u06cc \u0647\u0631 \u062f\u0648 \u0642\u0627\u0628\u0644 \u0645\u062f\u06cc\u0631\u06cc\u062a \u062a\u0631 \u06a9\u0646\u062f <code>Client<\/code> \u0648 <code>Server<\/code>.  gRPC \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0628\u0627\u0641\u0631\u0647\u0627\u06cc \u067e\u0631\u0648\u062a\u06a9\u0644 \u0648 HTTP\/2\u060c \u0637\u0631\u0627\u062d\u06cc \u0642\u062f\u06cc\u0645\u06cc RPC \u0631\u0627 \u0642\u0627\u0628\u0644 \u0627\u062c\u0631\u0627 \u0648 \u06a9\u0627\u0631\u0622\u0645\u062f \u0645\u06cc\u200c\u06a9\u0646\u062f.  gRPC \u0628\u0627 \u0628\u0627\u0641\u0631\u0647\u0627\u06cc \u067e\u0631\u0648\u062a\u06a9\u0644 \u0645\u0639\u0627\u062f\u0644 JSON \u06cc\u0627 XML \u0628\u0627 REST API \u0627\u0633\u062a.  \u0645\u0634\u062e\u0635\u0627\u062a HTTP\/2 \u062f\u0631 \u0633\u0627\u0644 2015 \u0645\u0646\u062a\u0634\u0631 \u0634\u062f \u0648 \u0628\u0631 \u0631\u0648\u06cc \u0637\u0631\u0627\u062d\u06cc 20 \u0633\u0627\u0644\u0647 HTTP\/1.1 \u0628\u0647\u0628\u0648\u062f \u06cc\u0627\u0641\u062a.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"%D8%A8%D8%A7%D9%81%D8%B1%D9%87%D8%A7%DB%8C_%D9%BE%D8%B1%D9%88%D8%AA%DA%A9%D9%84_%DA%86%DB%8C%D8%B3%D8%AA%D8%9F\"><\/span>\n<p>  \u0628\u0627\u0641\u0631\u0647\u0627\u06cc \u067e\u0631\u0648\u062a\u06a9\u0644 \u0686\u06cc\u0633\u062a\u061f<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>gRPC \u0627\u0632 \u0686\u0646\u062f\u06cc\u0646 \u0641\u0631\u0645\u062a \u0633\u0631\u06cc\u0627\u0644\u200c\u0633\u0627\u0632\u06cc \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0645\u06cc\u200c\u06a9\u0646\u062f\u060c \u0627\u0645\u0627 \u0631\u0627\u06cc\u062c\u200c\u062a\u0631\u06cc\u0646 \u0622\u0646\u0647\u0627 Protocol Buffers \u0627\u0633\u062a.  \u0627\u06cc\u0646 \u06cc\u06a9 \u0633\u0627\u062e\u062a\u0627\u0631 \u0633\u0631\u06cc\u0627\u0644 \u0633\u0627\u0632\u06cc \u0645\u0646\u0628\u0639 \u0628\u0627\u0632 \u0627\u0633\u062a \u06a9\u0647 \u0628\u0647 \u0637\u0648\u0631 \u062e\u0627\u0635 \u0628\u0631\u0627\u06cc \u06a9\u0627\u0631\u0627\u06cc\u06cc \u0648 \u0628\u0647\u06cc\u0646\u0647 \u0633\u0627\u0632\u06cc \u0637\u0631\u0627\u062d\u06cc \u0634\u062f\u0647 \u0627\u0633\u062a.  \u062a\u062c\u0632\u06cc\u0647 \u062f\u0627\u062f\u0647 \u0647\u0627 \u0628\u0627 \u0628\u0627\u0641\u0631\u0647\u0627\u06cc \u067e\u0631\u0648\u062a\u06a9\u0644 \u0627\u0632 CPU \u06a9\u0645\u062a\u0631\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u062f \u0632\u06cc\u0631\u0627 \u062f\u0627\u062f\u0647 \u0647\u0627 \u062f\u0631 \u0642\u0627\u0644\u0628 \u062f\u0648\u062f\u0648\u06cc\u06cc \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u0645\u06cc \u0634\u0648\u0646\u062f \u06a9\u0647 \u0627\u0645\u06a9\u0627\u0646 \u0628\u0647 \u062d\u062f\u0627\u0642\u0644 \u0631\u0633\u0627\u0646\u062f\u0646 \u0627\u0646\u062f\u0627\u0632\u0647 \u067e\u06cc\u0627\u0645 \u0647\u0627\u06cc \u0631\u0645\u0632\u06af\u0630\u0627\u0631\u06cc \u0634\u062f\u0647 \u0631\u0627 \u0641\u0631\u0627\u0647\u0645 \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"gRPC_%D9%88_Net_Core\"><\/span>\n<p>  gRPC \u0648 .Net Core<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0627\u0632 \u0637\u0631\u0641 \u0645\u0627\u06cc\u06a9\u0631\u0648\u0633\u0627\u0641\u062a\u060c \u062a\u06cc\u0645 \u062f\u0627\u062a \u0646\u062a \u0628\u0631\u0627\u06cc \u0622\u0648\u0631\u062f\u0646 gRPC \u0628\u0647 \u062c\u0627\u0645\u0639\u0647 \u062f\u0627\u062a \u0646\u062a \u06a9\u0627\u0631 \u06a9\u0631\u062f\u0647 \u0627\u0633\u062a.  \u0642\u0628\u0644\u0627\u064b \u06cc\u06a9 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u0627\u0648\u0644\u06cc\u0647 \u062f\u0627\u0634\u062a\u06cc\u062f \u06a9\u0647 \u0628\u0647 \u062e\u0648\u0628\u06cc \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u0647\u0627\u06cc \u062f\u06cc\u06af\u0631 \u0646\u0628\u0648\u062f \u0648 \u0647\u06cc\u0686 \u0627\u0644\u06af\u0648\u06cc \u067e\u0631\u0648\u0698\u0647 \u0627\u06cc \u0646\u062f\u0627\u0634\u062a\u06cc\u062f \u06a9\u0647 \u0628\u0647 \u0634\u0645\u0627 \u06a9\u0645\u06a9 \u06a9\u0646\u062f \u0628\u0631\u0646\u0627\u0645\u0647 \u062e\u0648\u062f \u0631\u0627 \u0628\u0627 gRPC \u062a\u0646\u0638\u06cc\u0645 \u06a9\u0646\u06cc\u062f.  \u0627\u06a9\u0646\u0648\u0646 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u0628\u0647\u062a\u0631 \u0648 \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0628\u0647\u062a\u0631\u06cc \u062f\u0627\u0631\u06cc\u0645.<\/p>\n<p>\u0627\u06a9\u0646\u0648\u0646 \u06cc\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647 gRPC \u0628\u0631\u0627\u06cc \u0647\u0631 \u062f\u0648 a \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u06cc\u0645 <code>Server<\/code> \u0648 \u0627\u0644\u0641 <code>Client<\/code>.  \u062f\u0631 \u062d\u06cc\u0646 \u0627\u06cc\u062c\u0627\u062f \u0628\u0631\u0646\u0627\u0645\u0647 gRPC\u060c \u0633\u0639\u06cc \u062e\u0648\u0627\u0647\u06cc\u0645 \u06a9\u0631\u062f \u062a\u0627 \u062d\u062f \u0627\u0645\u06a9\u0627\u0646 \u0646\u06cc\u0627\u0632\u0647\u0627\u06cc \u0632\u0646\u062f\u06af\u06cc \u0648\u0627\u0642\u0639\u06cc \u0631\u0627 \u0628\u0631\u0622\u0648\u0631\u062f\u0647 \u06a9\u0646\u06cc\u0645.  \u0628\u0631\u0627\u06cc \u0622\u0646 \u062f\u0648 \u0628\u0631\u0646\u0627\u0645\u0647 \u0645\u0633\u062a\u0642\u0644 \u06cc\u06a9\u06cc \u0628\u0631\u0627\u06cc Client \u0648 \u062f\u06cc\u06af\u0631\u06cc \u0628\u0631\u0627\u06cc \u0633\u0631\u0648\u0631 \u0627\u06cc\u062c\u0627\u062f \u062e\u0648\u0627\u0647\u06cc\u0645 \u06a9\u0631\u062f.  \u0645\u0627 \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u062a\u0648 \u062f\u0631 \u062a\u0648 \u0631\u0627 \u0627\u0632 <code>Client<\/code> \u0634\u0627\u0645\u0644 \u0639\u062f\u062f \u0635\u062d\u06cc\u062d\u060c \u0631\u0634\u062a\u0647 \u0648 \u062a\u0627\u0631\u06cc\u062e \u0648 \u0647\u0645\u0686\u0646\u06cc\u0646 \u062f\u0631\u06cc\u0627\u0641\u062a \u067e\u0627\u0633\u062e \u0627\u0632 <code>Server<\/code> \u0648 \u0622\u0646 \u0631\u0627 \u067e\u0631\u062f\u0627\u0632\u0634 \u06a9\u0646\u06cc\u062f.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"%D8%B1%D8%A7%D9%87_%D8%A7%D9%86%D8%AF%D8%A7%D8%B2%DB%8C_gRPC\"><\/span>\n<p>  \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc gRPC<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0628\u0631\u0627\u06cc <code>Server<\/code> \u0645\u0627 \u06cc\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647 \u0648\u0628 AspNetCore \u062c\u062f\u06cc\u062f \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u06cc\u0645 \u0648 \u0628\u0633\u062a\u0647 \u0647\u0627\u06cc \u0632\u06cc\u0631 \u0631\u0627 \u0627\u0636\u0627\u0641\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u0645.  \u0634\u0645\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u0632 \u0647\u0631 \u0642\u0627\u0644\u0628 \u062f\u06cc\u06af\u0631\u06cc \u0628\u0647 \u062f\u0644\u062e\u0648\u0627\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>&lt;ItemGroup&gt;\n    &lt;PackageReference Include=\"Google.Protobuf\" Version=\"3.22.1\" \/&gt;\n    &lt;PackageReference Include=\"Grpc.AspNetCore\" Version=\"2.51.0\" \/&gt;\n    &lt;PackageReference Include=\"Grpc.AspNetCore.Web\" Version=\"2.51.0\" \/&gt;\n    &lt;PackageReference Include=\"Grpc.Tools\" Version=\"2.52.0\"&gt;\n      &lt;PrivateAssets&gt;all&lt;\/PrivateAssets&gt;\n      &lt;IncludeAssets&gt;runtime; build; native; contentfiles; analyzers; buildtransitive&lt;\/IncludeAssets&gt;\n    &lt;\/PackageReference&gt;\n  &lt;\/ItemGroup&gt;\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0628\u0631\u0627\u06cc <code>Client<\/code> \u0645\u0627 \u06cc\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647 \u06a9\u0646\u0633\u0648\u0644 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u06cc\u0645 \u0648 \u0628\u0633\u062a\u0647 \u0647\u0627\u06cc \u0632\u06cc\u0631 \u0631\u0627 \u0627\u0636\u0627\u0641\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u0645.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>&lt;ItemGroup&gt;\n    &lt;PackageReference Include=\"Google.Protobuf\" Version=\"3.22.1\" \/&gt;\n    &lt;PackageReference Include=\"Grpc.Net.Client\" Version=\"2.51.0\" \/&gt;\n    &lt;PackageReference Include=\"Grpc.Net.Client.Web\" Version=\"2.51.0\" \/&gt;\n    &lt;PackageReference Include=\"Grpc.Tools\" Version=\"2.52.0\"&gt;\n      &lt;PrivateAssets&gt;all&lt;\/PrivateAssets&gt;\n      &lt;IncludeAssets&gt;runtime; build; native; contentfiles; analyzers; buildtransitive&lt;\/IncludeAssets&gt;\n    &lt;\/PackageReference&gt;\n  &lt;\/ItemGroup&gt;\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0628\u0631\u0627\u06cc \u0647\u0631 \u062f\u0648 \u067e\u0631\u0648\u0698\u0647 \u06cc\u06a9 \u067e\u0631\u0648\u0698\u0647 \u062c\u062f\u06cc\u062f \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f <code>Protos<\/code> \u067e\u0648\u0634\u0647 \u0648 \u06cc\u06a9 \u0641\u0627\u06cc\u0644 \u062e\u0627\u0644\u06cc \u062c\u062f\u06cc\u062f \u0628\u0627 \u0646\u0627\u0645 company.proto \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f.<\/p>\n<p><\/p>\n<p>\u0645\u0627 \u0627\u0632 Proto Buffers \u0628\u0631\u0627\u06cc \u062a\u0631\u0633\u06cc\u0645 \u0633\u0631\u0648\u06cc\u0633 gRPC\u060c \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0648 \u067e\u0627\u0633\u062e \u062e\u0648\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u062e\u0648\u0627\u0647\u06cc\u0645 \u06a9\u0631\u062f.  \u0645\u0627 \u06cc\u06a9 \u0633\u0627\u062e\u062a\u0627\u0631 \u062a\u0648\u062f\u0631\u062a\u0648\u06cc \u0634\u0631\u06a9\u062a \u0648 \u06a9\u0627\u0631\u0645\u0646\u062f \u0648 \u06cc\u06a9 \u0638\u0631\u0641 \u0628\u0631\u0627\u06cc \u067e\u0627\u0633\u062e \u0627\u06cc\u062c\u0627\u062f \u062e\u0648\u0627\u0647\u06cc\u0645 \u06a9\u0631\u062f.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>syntax = \"proto3\";\n\nimport \"google\/protobuf\/timestamp.proto\";\n\noption csharp_namespace = \"GrpcServer\";\n\n\/\/ The Company service definition.\nservice Company {\n  \/\/ Sends a greeting\n  rpc PostCompanyWithEmployees (CompanyModel) returns (Response);\n}\n\n\/\/ The request message containing the companies's details with employees.\nmessage CompanyModel {\n  int32 companyId = 1;\n  string comapnyName = 2;\n  repeated EmployeeModel employees = 3;\n}\n\n\/\/ The request message containing the employee's details.\nmessage EmployeeModel {\n  int32 empId = 1;\n  string empName = 2;\n  int32 companyId = 3;\n  google.protobuf.Timestamp birthDate = 4;\n}\n\n\/\/ The response message containing the response status.\nmessage Response {\n  int32 status = 1;\n}\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0627\u06a9\u0646\u0648\u0646\u060c \u0641\u0642\u0637 \u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0627 \u0630\u062e\u06cc\u0631\u0647 \u0648 \u0628\u0633\u0627\u0632\u06cc\u062f.  \u062e\u0637 \u0632\u06cc\u0631 \u0627\u0636\u0627\u0641\u0647 \u062e\u0648\u0627\u0647\u062f \u0634\u062f <code>.csproj<\/code> \u0641\u0627\u06cc\u0644.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>&lt;ItemGroup&gt;\n  &lt;Protobuf Include=\"Protos\\company.proto\" GrpcServices=\"Server\" \/&gt;\n&lt;\/ItemGroup&gt;\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0645\u0627 \u0628\u0627\u06cc\u062f \u0628\u0647 \u0648\u06cc\u0698\u06af\u06cc GrpcServices \u062a\u0648\u062c\u0647 \u06a9\u0646\u06cc\u0645.  \u0627\u06cc\u0646 \u0646\u0634\u0627\u0646 \u0645\u06cc \u062f\u0647\u062f \u06a9\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 \u062f\u0631 \u06a9\u062f\u0627\u0645 \u0633\u0645\u062a \u0642\u0631\u0627\u0631 \u062e\u0648\u0627\u0647\u062f \u06af\u0631\u0641\u062a\u060c <code>Server<\/code> \u06cc\u0627 <code>Client<\/code>.  \u062f\u0631 \u062d\u0627\u0644\u062a \u0641\u0648\u0642 \u0628\u0647 \u0635\u0648\u0631\u062a \u0646\u0634\u0627\u0646 \u062f\u0627\u062f\u0647 \u0645\u06cc \u0634\u0648\u062f <code>Server<\/code> \u062c\u0627\u06cc\u06cc \u06a9\u0647 \u062f\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u062f\u06cc\u06af\u0631 \u0645\u0627\u0646\u0646\u062f \u0622\u0646 \u062e\u0648\u0627\u0647\u062f \u0628\u0648\u062f <code>Client<\/code>.  \u062f\u0631 \u0635\u0648\u0631\u062a\u06cc \u06a9\u0647 \u062f\u0631 \u0622\u0646 <code>Server<\/code> \u0648 <code>Client<\/code> \u0647\u0631 \u062f\u0648 \u062f\u0631 \u0647\u0645\u0627\u0646 \u067e\u0631\u0648\u0698\u0647 \u0647\u0633\u062a\u0646\u062f \u06a9\u0647 \u062e\u0648\u0627\u0647\u062f \u0628\u0648\u062f <code>Server,Client<\/code>.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"%D8%B3%D8%B1%D9%88%DB%8C%D8%B3_gRPC\"><\/span>\n<p>  \u0633\u0631\u0648\u06cc\u0633 gRPC<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u062f\u0631 <code>Client<\/code> \u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0627 \u0628\u0627\u0632 \u06a9\u0646\u06cc\u062f <code>program.cs<\/code> \u0641\u0627\u06cc\u0644 \u0648 \u0631\u0648\u0634\u06cc \u0628\u0631\u0627\u06cc \u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0646 \u062c\u0632\u0626\u06cc\u0627\u062a \u0634\u0631\u06a9\u062a \u0648 \u06a9\u0627\u0631\u0645\u0646\u062f \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f.  \u0645\u0627 \u0627\u06cc\u0646 \u0631\u0648\u0634 \u0631\u0627 \u0627\u0632 \u0642\u0633\u0645\u062a \u0641\u0631\u0627\u062e\u0648\u0627\u0646\u06cc \u062e\u0648\u0627\u0647\u06cc\u0645 \u06a9\u0631\u062f <code>Main()<\/code> \u062a\u0627\u0628\u0639.<\/p>\n<p>\u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0645\u0627 \u06cc\u06a9 \u06a9\u0627\u0646\u0627\u0644 gRPC \u0628\u0627 URL \u0631\u0627\u0647 \u062f\u0648\u0631 \u0633\u0631\u0648\u0631 gRPC \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u06cc\u0645 \u06a9\u0647 \u0628\u0627 \u0633\u0631\u0648\u0631 gRPC \u0627\u0631\u062a\u0628\u0627\u0637 \u0628\u0631\u0642\u0631\u0627\u0631 \u0645\u06cc \u06a9\u0646\u062f.  \u067e\u0633 \u0627\u0632 \u0622\u0646 \u0628\u0627\u06cc\u062f \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u0645 <code>Employee<\/code> \u0648 <code>Company<\/code> \u0627\u0634\u06cc\u0627\u0621 \u0628\u0631\u0627\u06cc \u0627\u0631\u0633\u0627\u0644 \u0622\u0646 \u0628\u0627 \u0633\u0631\u0648\u06cc\u0633.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>var channel = GrpcChannel.ForAddress(\"https:\/\/localhost:5001\", new GrpcChannelOptions\n                {\n                    HttpHandler = new GrpcWebHandler(new HttpClientHandler())\n                });\n                var readerClient = new Company.CompanyClient(channel);\n                \/\/Creating new employees\n                var employees = new EmployeeModel[]\n                {\n                    new EmployeeModel\n                    {\n                        EmpId = 1,\n                        EmpName = \"Rama Bapat\",\n                        BirthDate = Timestamp.FromDateTime(DateTime.UtcNow.AddYears(-24).AddMonths(-4)),\n                        CompanyId = 1\n                    },\n                    new EmployeeModel\n                    {\n                        EmpId = 2,\n                        EmpName = \"Krishna Nene\",\n                        BirthDate = Timestamp.FromDateTime(DateTime.UtcNow.AddYears(-22).AddMonths(-7)),\n                        CompanyId = 1\n                    }\n                };\n                \/\/Creating new company\n                var company = new CompanyModel\n                {\n                    CompanyId = 1,\n                    ComapnyName = \"Patankar Khauwale\"\n                };\n\n                \/\/Adding employees to company model\n                company.Employees.Add(employees);\n                \/\/Calling the server channel\n                var responseData = await readerClient.PostCompanyWithEmployeesAsync(company);\n\n                if (responseData.Status == 1)\n                { \n                    Console.WriteLine(\"Company &amp; Employees added Successfully.\");\n                }\n                else \n                {\n                    Console.WriteLine(\"Company &amp; Employees could not be added, please try again.\");\n                }\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u062f\u0631 \u062d\u0627\u0644 \u062d\u0627\u0636\u0631 \u062f\u0631 <code>Server<\/code> \u0628\u0631\u0646\u0627\u0645\u0647\u060c \u06cc\u06a9 \u0645\u062a\u062f \u0628\u0627 \u0646\u0627\u0645 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f <code>PostCompanyWithEmployees<\/code> \u0648 \u0627\u0646\u062a\u0638\u0627\u0631 <code>CompanyModel<\/code> \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0648\u0631\u0648\u062f\u06cc \u0628\u0627 <code>gRPC.Respose<\/code> \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0646\u0648\u0639 \u0628\u0631\u06af\u0634\u062a\u06cc<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>public override Task&lt;Response&gt; PostCompanyWithEmployees(CompanyModel request, ServerCallContext context)\n        {\n            try\n            {\n                \/\/Add your database\/API call here to save the Employee &amp; Company details.\n                \/\/After successful post call return the Status as 1 else 0.\n                return Task.FromResult(new Response\n                {\n                    Status = 1\n                });\n            }\n            catch\n            {\n                return Task.FromResult(new Response\n                {\n                    Status = 0\n                });\n            }            \n        }\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u067e\u0633 \u0627\u0632 \u0627\u0646\u062c\u0627\u0645 \u0647\u0645\u0647 \u06a9\u0627\u0631\u0647\u0627\u060c \u0645\u0627 \u0647\u0631 \u062f\u0648 \u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0627 \u0627\u062c\u0631\u0627 \u0645\u06cc \u06a9\u0646\u06cc\u0645 \u0648 \u0633\u0631\u0648\u0631 \u0631\u0627 \u0635\u062f\u0627 \u0645\u06cc \u06a9\u0646\u06cc\u0645 \u0648 \u0628\u0627\u06cc\u062f \u0627\u0632 \u0622\u0646 \u067e\u0627\u0633\u062e \u062f\u0631\u06cc\u0627\u0641\u062a \u06a9\u0646\u06cc\u0645.  \u062f\u0631 \u0645\u0648\u0631\u062f \u0645\u0627 <code>Server<\/code> \u0628\u0627 \u06cc\u06a9 \u0639\u062f\u062f \u0635\u062d\u06cc\u062d \u067e\u0627\u0633\u062e \u062e\u0648\u0627\u0647\u062f \u062f\u0627\u062f.  \u0645\u0627 \u0646\u062a\u0627\u06cc\u062c \u0631\u0627 \u062f\u0631 \u067e\u0646\u062c\u0631\u0647 \u062e\u0631\u0648\u062c\u06cc \u06a9\u0646\u0633\u0648\u0644 \u062e\u0648\u0627\u0647\u06cc\u0645 \u062f\u06cc\u062f.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/nabfollower.com\/blog\/wp-content\/uploads\/2023\/03\/1678358091_595_\u0627\u0646\u062c\u0645\u0646-gRPC-\u0648-Net-Core-DEV.png\" alt=\"\u062e\u0631\u0648\u062c\u06cc Colsole\" loading=\"lazy\" width=\"665\" height=\"400\" title=\"\"><\/p>\n<p>\u062a\u0628\u0631\u06cc\u06a9 \u0645\u06cc \u06af\u0648\u06cc\u0645!  \u0645\u0627 \u0641\u0642\u0637 \u0628\u0627 \u0645\u0648\u0641\u0642\u06cc\u062a \u06cc\u06a9 <code>Client<\/code> \u0648 <code>Server<\/code> \u0628\u0631\u0646\u0627\u0645\u0647 gRPC<\/p>\n<h3><span class=\"ez-toc-section\" id=\"%D9%85%D9%86%D8%A7%D8%A8%D8%B9\"><\/span>\n<p>  \u0645\u0646\u0627\u0628\u0639<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0639\u06a9\u0633 \u0631\u0648\u06cc \u062c\u0644\u062f \u062a\u0648\u0633\u0637 \u06a9\u0631\u06cc\u0645 \u0645\u0646\u062c\u0631\u0627 \u062f\u0631 Unsplash<\/p>\n<\/p><\/div>\n","protected":false},"excerpt":{"rendered":"<p>\u0628\u0647\u200c\u0639\u0646\u0648\u0627\u0646 \u062a\u0648\u0633\u0639\u0647\u200c\u062f\u0647\u0646\u062f\u06af\u0627\u0646\u060c \u062f\u0631 \u062d\u06cc\u0646 \u0633\u0627\u062e\u062a \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627\u06cc API\u060c \u062e\u0648\u062f \u0631\u0627 \u0628\u06cc\u0646 \u0627\u0646\u062a\u062e\u0627\u0628\u200c\u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641\u06cc \u0627\u0632 \u0641\u0631\u06cc\u0645\u200c\u0648\u0631\u06a9\u200c\u0647\u0627 \u0645\u06cc\u200c\u06cc\u0627\u0628\u06cc\u0645 \u0628\u0627\u0642\u06cc \u0645\u0627\u0646\u062f\u0647\u060c \u0635\u0627\u0628\u0648\u0646\u060c GraphQL\u060c HTTP API \u0648 \u0628\u06cc\u0634\u062a\u0631. \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0628\u0631\u0627\u06cc \u06cc\u06a9 \u062a\u0648\u0633\u0639\u0647 \u062f\u0647\u0646\u062f\u0647 \u062f\u0634\u0648\u0627\u0631 \u0628\u0627\u0634\u062f \u06a9\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 \u062f\u0631\u0633\u062a\u06cc \u0631\u0627 \u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0646\u062f \u06a9\u0647 \u0646\u06cc\u0627\u0632\u0647\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0627 \u0628\u0631\u0622\u0648\u0631\u062f\u0647 \u06a9\u0646\u062f. \u062f\u0631 \u0627\u06cc\u0646 \u067e\u0633\u062a\u060c \u0645\u06cc\u200c\u062e\u0648\u0627\u0647\u0645 gRPC \u0631\u0627 \u06a9\u0647 \u06cc\u06a9\u06cc \u0627\u0632 \u0631\u0648\u0634\u200c\u0647\u0627\u06cc \u062c\u062f\u06cc\u062f\u062a\u0631 \u0627\u0633\u062a\u060c &hellip;<\/p>\n","protected":false},"author":2,"featured_media":11107,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"fifu_image_url":"","fifu_image_alt":"","footnotes":""},"categories":[339],"tags":[],"class_list":["post-11106","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-dev"],"_links":{"self":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/11106","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/comments?post=11106"}],"version-history":[{"count":0,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/11106\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media\/11107"}],"wp:attachment":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media?parent=11106"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/categories?post=11106"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/tags?post=11106"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}