بهترین و جامع ترین آموزش gRPC در Asp.net Core
Tags: grpc, api, restapi, webapi
Published: 2023-07-15 08:26:28

## gRPC چیست؟

از آنجایی که جهان روز به روز بیشتر و بیشتر به هم متصل می شود، نیاز به بارگذاری داده های بسیار بیشتری توسط سرورهای ما دارد و در این زمینه، گوگل یک چارچوب معماری سریع تر و کارآمدتر برای ارتباطات به نام [gRPC ](https://codecell.ir/course/788d)ارائه کرد.

gRPC یک چارچوب قدرتمند برای کار با Remote Procedure Call(RPC) یا تماس از راه دور است. RPC به شما امکان می‌دهد تا کد خود را طوری بنویسید که گویی روی یک کامپیوتر محلی یا حتی روی کامپیوتر دیگری اجرا می شود.

RPC شکلی از ارتباط کلاینت-سرو است که از فراخوانی تابع به جای ارتباط معمولی HTTP استفاده می کند. در واقع gRPC چارچوبی برای پیاده سازی API های RPC از طریق HTTP/2 است.

بنابراین gRPC از نظر فنی مفهوم جدیدی نیست. بلکه از RPC اقتباس شده و بهبود یافته است و در عرض 5 سال بسیار محبوب شده است.

## مروری بر gRPC
در سال 2015، گوگل پروژه gRPC خود را منبع باز کرد. اما حرف "g" در gRPC در واقع به معنای چیست؟

بسیاری از مردم ممکن است "g" در gRPC را برای گوگل فرض کنند زیرا گوگل آن را ساخته است، اما اینطور نیست. گوگل معنای "g" را برای هر نسخه تغییر می دهد تا جایی که حتی یک README برای فهرست کردن همه معانی آن ایجاد کرده است.

از زمانی که gRPC معرفی شده است، محبوبیت زیادی به دست آورده است و بسیاری از شرکت ها از آن استفاده می کنند.

## مزایای استفاده از gRPC
gRPC با استفاده از فناوری‌ هایی مانند Protocol Buffers و HTTP/2، روش طراحی قدیمی RPC را با قابلیت تعامل، مدرن و کارآمد می‌کند. مزایای زیر gRPC را به یک کاندید قوی برای جایگزینی REST در برخی عملیات تبدیل کرده است.

پیام های بسیار سبک(Message) در gRPC:
بسته به نوع ارتباط، اندازه پیام‌ های مخصوص gRPC می‌تواند تا 30 درصد کوچک‌ تر از پیام‌ های JSON باشد.

ارتباط های بسیار سریع در gRPC:
HTTP/2 نسبت به پروتکل‌های قدیمی‌ تر مانند HTTP/1.1 کارآمدتر است و به gRPC اجازه می‌دهد استفاده از پهنای باند شبکه و تأخیر را کاهش دهد. همچنین، از آنجایی که پیام ها کوچکتر هستند، می توان آنها را با سرعت بیشتری بین سرورها و کلاینت ها منتقل کرد. gRPC  همچنین به کاهش بار روی شبکه کمک می کند و تجربه کاربری روان تری را ارائه می دهد. با ارزیابی های مختلف، در gRPC نسبت به ارتباطات REST+JSON حدود 5، 7 و حتی 8 برابر سریعتر است. 

اجرای gRPC در مقایسه با REST وقت گیر است اما در دریافت 7 برابر سریع تر  و در ارسال داده 10 برابر سریع تر از REST است.

قابلیت تولید کد داخلی در gRPC:
gRPC دارای قابلیت تولید کد خودکار در زبان های برنامه نویسی مختلف از جمله جاوا، C++، Python، Go,C#، Dart، Objective-C، Ruby و غیره است.

گزینه های اتصال بیشتر در gRPC:
در حالی که [REST ](https://codecell.ir/course/efdc)بر معماری request-response متمرکز است، gRPC از data streaming های زیر پشتیبانی می کند:

server-side streaming
client-side streaming
bidirectional streaming

## چرا gRPC محبوب است؟
دلایل زیادی برای محبوبیت gRPC وجود دارد:

gRPC دارای انتزاع آسان است (یک فراخوانی تابع است)
gRPC در بسیاری از زبان ها پشتیبانی می شود
gRPC بسیار کاربردی است
فراخوانی های HTTP اغلب گیج کننده هستند، بنابراین gRPC کار را آسان تر می کند
gRPC محبوب است زیرا میکروسرویس ها بسیار محبوب هستند.

## میکروسرویس ها و  gRPC
از gRPC برای ایجاد ارتباط بین میکروسرویس ها استفاده می شود. 

gRPC به اتفاق آرا به عنوان بهترین گزینه برای ارتباط بین میکروسرویس های داخلی به دو دلیل پذیرفته شده است: عملکرد بی بدیل و ماهیت چند زبانه آن.

## چرا یادگیری gRPC برای برنامه نویسان  و توسعه دهندگان بسیار اهمیت دارد؟
یادگیری gRPC برای برنامه نویسان به چند دلیل بسیارمهم است:

gRPC عملکرد بسیار بالایی دارد
gRPC از فرمت داده Protocol Buffers استفاده می کند که یک فرمت باینری است که فشرده تر و کارآمدتر از JSON یا XML است. این بدان معنی است که gRPC می تواند تعداد زیادی درخواست را با سربار کمتر انجام دهد و همچنین می تواند سریع تر از سایر چارچوب ها باشد.

پشتیبانی از انواع زبان ها
 gRPC از طیف گسترده ای از زبان های برنامه نویسی، از جمله C++,C#، Java، Python، Go، Ruby و بسیاری دیگر پشتیبانی می کند. این امر ایجاد سیستم های چند زبانه ای را که می توانند به طور یکپارچه با هم کار کنند آسان می کند و به توسعه دهندگان کمک می کند تا از زبان دلخواه خود استفاده کنند.

استفاده از gRPC به طور گسترده در صنعت
gRPC به طور گسترده در صنعت به ویژه در زمینه میکروسرویس ها و برنامه های کاربردی ابری استفاده می شود. gRPC دارای یک جامعه متن باز بسیار فعال است، به این معنی که منابع، آموزش ها و پشتیبانی زیادی دارد.

تقویت مهارت های برنامه نویسی خود در آینده
 از آنجایی که gRPC محبوبیت بیشتری پیدا می کند و در حال تبدیل شدن به استانداردی برای ساختن سیستم های توزیع شده با کارایی بالا است، یادگیری gRPC باعث می شود مهارت های شما در بازار کار ارزشمند تر شود.

به طور کلی، یادگیری gRPC برای توسعه دهندگانی که می خواهند سیستم هایی با کارایی بالا و با چندین زبان برنامه نویسی بسازند، به ویژه در زمینه میکروسرویس ها و برنامه های کاربردی ابری مهم است. همچنین gRPC برای کسانی که به دنبال کار در صنعت یا به روز ماندن با آخرین فن آوری ها هستند، یک مهارت ارزشمند است.

## سر فصل های آموزش gRPC در Asp Core
در این [دوره آموزشی](https://codecell.ir/course/788d) نحوه استفاده از gRPC در را در قالب یک پروژه Asp Core 7 به صورت کامل و جامع به شما آموزش خواهیم داد.

سرفصل های دوره آموزش gRPC در Asp.net Core به شرح زیر خواهد بود:

بررسی فایل Proto Buffer
بررسی انواع Data Type ها در Message های gRPC
بررسی سرویس های gRPC در Proto Buffer ها و نحوه کامپایل کردن آن ها
ایجاد  gRPC Server و gRPC Client  و تنظیمات مربوط به آن ها
ایجاد Unary Call در gRPC در Asp.net Core
ورژن بندی gRPC در Asp.net Core
ایجاد Server Streaming Call در gRPC در Asp.net Core
ایجاد Client Streaming Call در gRPC در Asp.net Core
ایجاد Bidirectional Streaming Call در gRPC در Asp.net Core
آپلود و دانلود فایل از طریق gRPC در Asp.net Core
استفاده از متد های gRPC با استفاده از gRPC Server Reflection در ابزار Postman در Asp.net Core
تبدیل gRPC به Rest با استفاده از Json Transcoding در Asp.net Core
راه اندازی Swagger برای gRPC در Asp.net Core
مدیریت خطا های gRPC در Asp.net Core
Authentication و احراز هویت در gRPC با استفاده از Jwt در Asp.net Core
استفاده از gRPC interceptor ها در Asp.net Core
اعتبارسنجی message های gRPC در Asp.net Core

## نتیجه گیری:
gRPC یک فناوری مهم برای ساخت برنامه‌های کاربردی با کارایی بالا، مقیاس‌پذیر و چند پلتفرمی است. gRPC در ASP.NET Core، یک پروتکل ارتباطی جدید ارائه می کند که می تواند برای ساخت سرویس های کارآمد و مقیاس پذیر استفاده شود. gRPC با پشتیبانی از چندین زبان، API با کاربری آسان، امنیت داخلی و پشتیبانی از Stream، یک انتخاب برتر برای توسعه دهندگانی است که به دنبال ساخت برنامه های مدرنی هستند که بتوانند حجم زیادی از ترافیک را مدیریت کنند. همانطور که توسعه دهندگان بیشتر و بیشتر از gRPC استفاده می کنند، احتمالاً در سال های آینده به یک پروتکل ارتباطی استاندارد برای ساخت سیستم های توزیع شده تبدیل می شود.
این دوره [بهترین و جامع دوره gRPC در Asp.net Core](https://codecell.ir/course/788d) است.